空的空格检查和string.split错误

时间:2015-05-11 22:01:14

标签: python string

当我尝试将字符串拆分为两个值时,出现以下错误。

  

错误: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')

3 个答案:

答案 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)

  1. 使用else:而不是第二个if。
  2. if ('' in line):应为if '' in line: