我有一个字符串myString
:
myString = "alpha beta gamma"
我想将myString
分成三个字:
myWords = myString.split()
然后,我可以单独访问每个单词:
firstWord = myWords[0]
secondWord = myWords[1]
thirdWord = myWords[2]
我的问题:作为split()
函数的输出,如何在一行中分配这三个单词?例如,像:
[firstWord secondWord thirdWord] = myString.split()
Python 2.7中的语法是什么?
答案 0 :(得分:5)
几乎正是您尝试过的作品:
firstWord, secondWord, thirdWord = myString.split()
演示:
>>> first, second, third = "alpha beta gamma".split()
>>> first
'alpha'
>>> second
'beta'
>>> third
'gamma'
答案 1 :(得分:1)
扩展Pieter先生的回答和TheSoundDefense提出的comment,
str.split()
应该返回的值多于您允许的值,它会与ValueError: too many values to unpack
一致。在Python 3中你可以做到
first, second, third, *extraWords = str.split()
这会将所有额外内容转储到名为extraWords
的列表中。但是,对于Python 2,它会变得更复杂,更不方便,如this question and answer中所述。
或者,您可以更改存储变量的方式,并使用理解将它们放入字典中。
>>> words = {i:word for i,word in enumerate(myString.split())}
>>> words
{0: 'alpha', 1: 'beta', 2: 'gamma'}
这样做的好处是可以避免将值一起解压缩(我认为这在Python 2中不太理想)。但是,这可能会混淆变量名称,因为它们现在称为words[0]
而不是更具体的名称。
答案 2 :(得分:0)
如果你想制作一个清单,上面的答案也是正确的:
my_list=[first, second, third] = "alpha beta gamma".split()
答案 3 :(得分:-1)
或者,使用列表理解......
mystring = "alpha beta gamma"
myWords = [x for x in mystring.split()]
first = myWords[0]
second = myWords[1]
third = myWords[2]
print(first, second, third)
alpha beta gamma