2017-10-31 15 views
1

各パイプ区切り値から最初の要素を取得する方法。Pythonでパイプシンボルで区切られた文字列のリストの最初の要素を印刷する方法

例については
test-123-2,abc,1232,,21,fd|lskd-929-8282,vbd,3221,,983,ew|ploi-90293-2,xsw,9073,,34,mn|opuye-8392-kl,few,45432,,234,df| 

value=test-123-2,abc,1232,,21,fd|lskd-929-8282,vbd,3221,,983,ew|ploi-90293-2,xsw,9073,,34,mn|opuye-8392-kl,few,45432,,234,df| 
result = value.split('|') 
restult[0] 

しかし、そのiが期待される出力は来ていない:

test-123-2 
lskd-929-8282 
ploi-90293-2 
opuye-8392-kl 

が、私はこのような何かを試してみました:は、私はこのような出力を印刷したいです。誰かがどのようにパイプ記号で区切られた各列のすべての最初の要素を印刷することができますか

ありがとうございます。

答えて

3

は、以下のようにsplit('|')split(',')を組み合わせる:

res = [w.split(',')[0] for w in s.split('|')] 

は出力:

>>> for v in res[:-1]: 
...  print(v) 
... 
test-123-2 
lskd-929-8282 
ploi-90293-2 
opuye-8392-kl 
1

私たちは、空の値を持つように注意して、二重の分割を行うことができます。これを試してみてください:屋は、あなたがする必要がどのような彼らと行うことができますので、今

s = 'test-123-2,abc,1232,,21,fd|lskd-929-8282,vbd,3221,,983,ew|ploi-90293-2,xsw,9073,,34,mn|opuye-8392-kl,few,45432,,234,df|' 
result = [data.split(',')[0] for data in s.split('|') if data] 

resultは、期待値が含まれています

result 
=> ['test-123-2', 'lskd-929-8282', 'ploi-90293-2', 'opuye-8392-kl'] 
0

別、リストの内包表記を使用してwihoutそれをやってのではないので、エレガントな方法はこれです:

test = "test-123-2,abc,1232,,21,fd|lskd-929-8282,vbd,3221,,983,ew|ploi-90293-2,xsw,9073,,34,mn|opuye-8392-kl,few,45432,,234,df|" 

result = list(map(lambda y: y.split(',')[0], list(map(lambda x: x, test.split('|'))))) 

for r in result: 
    print(r) 

結果は次のとおりです。

test-123-2 
lskd-929-8282 
ploi-90293-2 
opuye-8392-kl 
関連する問題