如何打印在python

时间:2017-10-31 22:36:24

标签: python string split delimiter

如何从每个管道分隔符值中获取第一个元素。

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]

但它没有达到我预期的输出。有人可以指导我如何打印由管道符号

分隔的每列中的所有第一个元素

提前致谢。

3 个答案:

答案 0 :(得分: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 :(得分: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']

答案 2 :(得分:0)

另一种不那么优雅的方式,不使用列表理解是这样的:

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