Python:拆分列表元素
这是对这个问题的后续讨论:在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'
的元素: