将string.split ()的输出转换为数组元素,一行代码完成

2024-04-19 16:44:28 发布

您现在位置: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()

Python2.7的语法是什么?


Tags: 函数字符串alpha语法单词betasplitgamma
3条回答

你所尝试的几乎完全有效:

firstWord, secondWord, thirdWord = myString.split()

演示:

>>> first, second, third = "alpha beta gamma".split()
>>> first
'alpha'
>>> second
'beta'
>>> third
'gamma'

为了进一步阐述皮耶特先生的回答和辩方提出的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],而不是更具体的名称。

如果您要制作一个列表,上面的答案也是正确的:

   my_list=[first, second, third] = "alpha beta gamma".split()

相关问题 更多 >