【问题标题】:Remove tabs from within lists of a list从列表的列表中删除选项卡
【发布时间】:2011-03-22 05:59:04
【问题描述】:

我有 10 个列表,其中有四个元素,每个元素由一个大列表中的选项卡分隔。如何删除选项卡,将元素分隔在各自的列表中,全部在一个大列表中?

【问题讨论】:

  • 标签?请您发布您的代码。

标签: python list loops for-loop


【解决方案1】:

感谢this question。这可能有效。

>>> tabbedlist = 'element0\telement1\telement2\telement3'
>>> list = tabbedlist.split('\t')
>>> list
['element0', 'element1', 'element2', 'element3']

这似乎也适用于:tabbedlist = 'element0 element1 element2 element3' 这些空格实际上是制表符,或者至少我的终端将它们渲染为空格。 (发帖压缩了空格,抱歉)

所以对于您的应用:

tenlists = [
    'l0e0\tl0e1\tl0e2',
    'l1e0\tl1e2\tl1e3\tl1e4',
    'l2e0\tl2e2',
    'l3e0\tl3e2\tl3e3\tl3e4\tl3e5',
    'l4e0\tl4e2\tl4e3\tl4e4\tl4e5\tl4e6',
    'l5e0\tl5e2\tl5e3\tl5e4\tl5e5\tl5e6\tl5e7',
]

largelist = []
for list in tenlists:
        largelist.append( list.split('\t') )

print largelist

【讨论】:

    【解决方案2】:

    要拆分单个列表,请使用列表推导:

    [x.split("\t") for x in list_with_tabbed_elements]
    

    现在,您需要对列表列表中的每个元素执行此操作。您可以使用其他列表推导,但我个人不喜欢嵌套列表推导,所以我建议在这里使用 map:

    map(lambda l: [x.split('\t') for x in l], list_of_lists)
    

    【讨论】:

      【解决方案3】:

      目前尚不清楚您的原始数据究竟是什么样的问题,但也许这就是您要寻找的全部内容?

      data = ["alpha\tbravo\tcharlie\tdelta",
              "one\ttwo\tthree\tfour"]
      
      new_data = map(lambda x: x.split("\t"), data)
      
      print new_data
      

      ...产生了输出:

      [['alpha', 'bravo', 'charlie', 'delta'], ['one', 'two', 'three', 'four']]
      

      【讨论】:

        【解决方案4】:

        我没有完全理解这个问题,所以我将做出以下假设。请让我知道它们是否正确。

        您的输入格式为:

        a = [["test\tinput"], ["test1\tinput1"]] # 10 elements.
        

        以下代码将创建一个列表 ['test', 'input', 'test1', 'input1']

        reduce(lambda x,y: x+y, [x[0].split('\t') for x in a])
        

        【讨论】:

        • 我猜他想要[['test', 'input'], ['test1','input1']] 结果:“让元素在各自的列表中分开”
        猜你喜欢
        • 1970-01-01
        • 2022-12-20
        • 1970-01-01
        • 2013-11-15
        • 1970-01-01
        • 2017-09-12
        • 2012-10-26
        • 2011-01-13
        相关资源
        最近更新 更多