【问题标题】:Python: split elements of a listPython:拆分列表的元素
【发布时间】:2014-06-02 10:32:12
【问题描述】:

作为这个问题的后续: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

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

【问题讨论】:

  • user1899415,你能接受答案吗?近一年来你有两个答案。

标签: python list split element


【解决方案1】:
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']

【讨论】:

  • 我打败你发布第二种方法(我用split())。
  • @smci 干得好!您想在哪里领取奖品?
【解决方案2】:

您的情况更简单,因为您可以利用我们丢弃标签前的所有内容:

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

请注意,我们使用 [-1] 而不是 [1],因此当我们 split('', '\t') 时不会因 IndexError 而爆炸,结果只会得到一组 ['']。 '-1' 表示'最后一个索引',因此当有 2 个拆分组时,-1 将等价于 1,当只有 1 个时,将等价于 0。

【讨论】:

    猜你喜欢
    • 2021-03-17
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多