Python:拆分列表的元素

时间:2014-04-17 23:39:49

标签: python list split element

作为对此问题的跟进: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

是因为我最后有''吗?如何排除它?

2 个答案:

答案 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。