例如我有以下列表:
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解决这个问题?
答案 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)
>>> 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
,当您遍历子列表时,这会为您填充。