将string.split()输出为数组元素的一行代码

2 投票
4 回答
12267 浏览
提问于 2025-04-18 15:56

我有一个字符串 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 个回答

-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
0

上面的回答是对的。如果你想要创建一个列表,可以这样做:

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

为了更好地解释Pieter先生的回答和TheSoundDefense提到的评论

如果使用str.split()时返回的值比你预期的多,程序会报错,提示ValueError: too many values to unpack。在Python 3中,你可以这样做:

first, second, third, *extraWords = str.split()

这样做会把多出来的部分放到一个叫extraWords的列表里。不过在Python 2中,这个过程会变得有点复杂,也不太方便,具体可以参考这个问题和回答

另外,你也可以改变存储变量的方式,使用字典来存储,方法是用一种叫做推导式的方式。

>>> words = {i:word for i,word in enumerate(myString.split())}
>>> words
{0: 'alpha', 1: 'beta', 2: 'gamma'}

这样做的好处是可以完全避免值的拆分(我觉得在Python 2中这样做不是最理想的)。不过,这样会让变量名变得不太清晰,因为它们现在被称为words[0],而不是更具体的名称。

5

你尝试的几乎完全可以用:

firstWord, secondWord, thirdWord = myString.split()

演示:

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

撰写回答