2016-11-27 65 views
-2
Sum Qo'D tob 'e' SoH 
jeD ngeH maHaD 'e roj message maHa might consider 
leaving SoH yong roj 'baD yInD SoHDa Haup lives 
jeD ngeH maHaD 'e roj message maHa might consider 

我如何可以将其转换到这个列表:Python3创建列表

[['Sum', 'Qo'D', 'tob', "'e'", 'SoH'], 
['jeD', 'ngeH', 'maHaD', "'e", 'roj', 'maHa', 'might'], 
['leaving', 'SoH', 'yong', 'roj', "'baD", 'yInD', 'SoHDa', 'Haup'] 
['jeD', 'ngeH', 'maHaD', "'e", 'roj', 'message', 'maHa', 'might', 'consider']] 

例如list[0]['Sum', 'Qo'D', 'tob', "'e'", 'SoH']list[0][0]Sum

+0

见:['str.split()'](HTTPS://docs.python .ORG/3 /库/ stdtypes.html#str.split)。 –

回答

1

如果:

text="""Sum Qo'D tob 'e' SoH 
jeD ngeH maHaD 'e roj message maHa might consider 
leaving SoH yong roj 'baD yInD SoHDa Haup lives 
jeD ngeH maHaD 'e roj message maHa might consider""" 

做与oneliner(使用listcomp):

print([line.split() for line in text.splitlines()]) 

结果:

[['Sum', "Qo'D", 'tob', "'e'", 'SoH'], 
['jeD', 'ngeH', 'maHaD', "'e", 'roj', 'message', 'maHa', 'might', 'consider'], 
['leaving', 'SoH', 'yong', 'roj', "'baD", 'yInD', 'SoHDa', 'Haup', 'lives'], 
['jeD', 'ngeH', 'maHaD', "'e", 'roj', 'message', 'maHa', 'might', 'consider']] 

编辑:吉姆建议使用map替代,这这里有道理,因为我们不需要lambda来提供给map(我们已经可以使用str.split):

list(map(str.split, text.splitlines())) 

list是必需的因为蟒3 map返回迭代)

+0

或者:'list(map(str.split,text.split('\ n')))'。 –

+0

是的。自从python 3开始,我就忘了map(有意),因为如果它是你的最终输出,你必须创建一个列表。我注意到'map','filter'的使用真的很少,因为使用了listcomps。我用'map'在这里发布的所有解决方案都没有得到提升,与listcomps并发的解决方案做... –

+0

哈哈,我仍然觉得地图视觉吸引力,无论哪种方式,呈现两个是我总是尝试和做的:-) –