拆分列表具有相同的内容

时间:2014-07-25 00:35:29

标签: python

例如我有以下列表:

contents= ["i have two pens","prices = 5$","made in ____ and ____"]

我希望将它们拆分为具有以下相同内容的方式:

array[0]= ["i", "have", "two", "pens", ""]
array[1]= ["prices", "=", "5$", " ", " "]
array[2]= ["made", "in", "____", "and" ,"____"]

这意味着,每个数组都有相同数量的内容(这里是5)。我正在使用的代码是:

array = [phrase.split() for phrase in contents]

但可以肯定的是,它并没有将它们分成相同的内容。任何人都可以建议我如何使用python解决这个问题?

3 个答案:

答案 0 :(得分:1)

您需要检查哪个是最长的数组然后填充其他数组,如下所示:

array = [phrase.split() for phrase in contents]
x = max(len(i) for i in array)
result = [i + [''] * (x - len(i)) for i in array]

复杂但会为您提供您正在寻找的结果。

答案 1 :(得分:1)

这是另一种选择,可能也很复杂。

from itertools import izip_longest

array = [phrase.split() for phrase in contents]
l = izip_longest(*array, fillvalue=u'')
result = [list(t) for t in zip(*l)]

答案 2 :(得分:1)

使用izip_longest from itertools

扩展我的评论的快速演示
>>> from itertools import izip_longest
>>> contents = ["i have two pens",
                "prices = 5$",
                "made in ____ and ____"]
>>> array = [phrase.split() for phrase in contents]
>>> for t in izip_longest(*array, fillvalue=" "):
        print t


('i', 'prices', 'made')
('have', '=', 'in')
('two', '5$', '____')
('pens', ' ', 'and')
(' ', ' ', '____')

您不需要修改array,当您遍历子列表时,这会为您填充。