当我尝试将字符串拆分为两个值时,出现以下错误。
错误:builtins.ValueError:需要多于1个值才能解压缩
当我调试时,它表明第一个if
语句仍然为真,即使字符串中没有空格也是如此。我想知道为什么它不会进入第二个if
声明。
if ('' in line):
line=line.strip('\n')
code,number=line.split()
print(code,number)
if '' not in line:
print('missing key')
答案 0 :(得分:4)
'' in anystring
始终为True
,因为它是空字符串。空字符串总是在每个可能的字符串中,就像空集是每个集的子集一样。你可能想要检查' '
这是一个空格字符。
更好的方法是将字符串拆分为空格并检查列表的长度以确定是否有两个项目。例如:
linesplit = line.split()
if len(linesplit) == 2:
code, number = linesplit
print(code, number)
else:
print('missing key')
这是您在跳跃(LBYL)之前查看的方法。
try:
code, number = line.split()
print(code, number)
except ValueError:
print('missing key')
这是一种替代方法,您可以请求宽恕而非许可(EAFP)。
顺便说一句,我取消了str.strip
的来电,因为使用str.split
可以为您解决这个问题。
答案 1 :(得分:1)
''
是空字符串。问'' in line
就像问你是否可以在你的日程安排中为零时间的东西腾出空间。当然可以。总是。请改为' ' in line
。
答案 2 :(得分:-1)
if ('' in line):
应为if '' in line: