Python:拆分列表元素

4 投票
2 回答
941 浏览
提问于 2025-04-18 03:12

这是对这个问题的后续讨论:在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 个回答

4

你的情况比较简单,因为我们可以利用一个特性,就是在处理制表符(tab)时,会把它前面的内容都丢掉:

l = [x.split('\t')[-1] for x in l]
['0238.94', '2.3904', '0139847', '']

注意我们用了[-1]而不是[1],这样在用split('', '\t')分割时,如果只得到一个结果[''],就不会出现索引错误(IndexError)。'-1'表示'最后一个索引',所以当分割后有两个部分时,-1就相当于1,而只有一个部分时,-1就相当于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', '']
In [177]: [i.partition('\t')[-1] for i in l if '\t' in i]
Out[177]: ['0238.94', '2.3904', '0139847']

或者,如果你只想考虑那些包含 '\t' 的元素:

撰写回答