如何打印由 python 中的管道符号分隔的字符串列表中的第一个元素

How to print first element in list of string which is delimited by Pipe symbol in 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|

例如:我想打印这样的输出:

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

我试过这样的事情:

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]

但它没有达到我预期的输出。有人可以指导我如何打印每列中由管道符号分隔的所有第一个元素

提前致谢。

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

我们可以进行双重拆分,注意空值。试试这个:

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']

另一种不使用列表理解的不太优雅的方法是这样的:

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