Python 将string.split()输出为一行中的数组元素
我有一个字符串Python 将string.split()输出为一行中的数组元素,python,Python,我有一个字符串myString: myString = "alpha beta gamma" 我想将myString拆分为三个字: myWords = myString.split() 然后,我可以单独访问每个单词: firstWord = myWords[0] secondWord = myWords[1] thirdWord = myWords[2] 我的问题:如何在一行中指定这三个单词作为split()函数的输出?例如,类似于: [firstWord secondWord third
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中的语法是什么?几乎完全符合您尝试的工作原理:
firstWord, secondWord, thirdWord = myString.split()
演示:
或者,使用列表理解
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
如果您想列一张清单,请执行以下操作,上述答案也是正确的:
my_list=[first, second, third] = "alpha beta gamma".split()
为了进一步阐述Pieter先生的回答和辩护律师提出的问题 如果
str.split()
返回的值超出了您允许的范围,它将因ValueError:要解压缩的值太多而中断。在Python3中,您可以
first, second, third, *extraWords = str.split()
这将把所有额外的内容转储到一个名为extraWords
的列表中。但是,对于Python2来说,它会变得更复杂,也不那么方便,如中所述
或者,您可以更改存储变量的方式,并使用理解功能将它们放入字典中
>>> words = {i:word for i,word in enumerate(myString.split())}
>>> words
{0: 'alpha', 1: 'beta', 2: 'gamma'}
这样做的好处是避免了将值一起解包(我认为这在Python 2中并不理想)。但是,这会混淆变量名称,因为它们现在被称为单词[0]
,而不是更具体的名称 您正在运行哪个版本的python?您需要确保split()
将返回三个参数,否则它将失败。我正在运行python 2.7.6此列表理解没有意义,它只是将split()
返回的列表中的元素复制到一个新列表中,然后从split()复制列表
将被丢弃。
>>> words = {i:word for i,word in enumerate(myString.split())}
>>> words
{0: 'alpha', 1: 'beta', 2: 'gamma'}