python拆分函数错误"太多的值无法打开"

时间:2015-07-26 17:06:28

标签: python python-2.7 python-3.x

我想弄清楚为什么我会收到以下错误,我想我知道为什么我会收到错误,但我该怎么做呢?

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

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]