如何从每个管道分隔符值中获取第一个元素。
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]
但它没有达到我预期的输出。有人可以指导我如何打印由管道符号
分隔的每列中的所有第一个元素提前致谢。
答案 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