作为对此问题的跟进:split elements of a list in python
鉴于清单:
l = ['element1\t0238.94', 'element2\t2.3904', 'element3\t0139847', '']
如何在\t
之后获取所有内容?
我试过了:
>>> [i.split('\t', 1)[1] for i in t]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
是因为我最后有''
吗?如何排除它?
答案 0 :(得分:5)
In [175]: l = ['element1\t0238.94', 'element2\t2.3904', 'element3\t0139847', '']
In [176]: [i.partition('\t')[-1] for i in l]
Out[176]: ['0238.94', '2.3904', '0139847', '']
或者,如果您只想考虑其中包含'\t'
的元素:
In [177]: [i.partition('\t')[-1] for i in l if '\t' in i]
Out[177]: ['0238.94', '2.3904', '0139847']
答案 1 :(得分:4)
你的案子更容易,因为你可以利用我们扔掉标签前的所有内容:
l = [x.split('\t')[-1] for x in l]
['0238.94', '2.3904', '0139847', '']
注意我们使用[-1]而不是[1],所以当我们拆分('','\ t')时我们不会炸掉IndexError,结果只得到一个组['']
。
'-1'表示'最后一个索引',因此当有2个拆分组时-1将等于1,而当只有1个拆分组时则为0。