将string.split()输出到一行中的数组元素中

时间:2014-08-04 15:51:57

标签: python

我有一个字符串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中的语法是什么?

4 个答案:

答案 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
相关问题