我想弄清楚为什么我会收到以下错误,我想我知道为什么我会收到错误,但我该怎么做呢?
>>> port = '22-80'
>>> fromport, toport = port.split('-')
>>> fromport
'22'
>>> toport
'80'
>>>
>>> # Here is the error
>>>
>>> port = '-1--1'
>>> fromport, toport = port.split('-')
Traceback (most recent call last):
File "<pyshell#192>", line 1, in <module>
fromport, toport = port.split('-')
ValueError: too many values to unpack
>>>
>>>
输出应该是fromport应该是-1并且toport也应该是-1
答案 0 :(得分:3)
如果您打印port.split('-')
,您将获得['', '1', '', '1']
。这是一个包含4个元素的列表,您尝试将其解压缩为两个变量:
fromport, toport = port.split('-')
您获得['', '1', '', '1']
而不是['1', '1']
的原因是str.split('-')
从每个短划线的两边分割目标字符串:彼此相邻的两个短划线将会从它们之间拆分字符串,产生一个空字符串(''
)。
您可以使用列表解析删除所有空字符串:
fromport, toport = [s for s in port.split('-') if s]