当前位置:   article > 正文

【python】split出现ValueError: not enough values to unpack (expected 2, got 1)问题解决和反思

valueerror: not enough values to unpack (expected 2, got 1)

一、问题分析

在这里插入图片描述
使用split函数时出现了:ValueError: not enough values to unpack (expected 2, got 1)的问题,从英文的解析上来看,意思是没有足够的值去解压缩,期望是两个元素,但是只得到一个元素。

也就是说key1, key2 = line.split("->")这块,我只得到了一个值,所以我用两个返回值去取就会出错。

二、问题解决

代码如下:

def getOneDotFile(dotFile):
    with open(dotFile, encoding="utf-8") as f:
        while True:
            line = f.readline()
            if not line:
                break
            # 节点关系->:子->父
            line = line.strip()
            if line.find("->"):
                # print(line)
                key1, key2 = line.split("->")
                child = key1.strip()
                father = key2.strip().strip(";")
                print(child)
                print(father)
                continue
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

这段代码里我从文件一行一行地读取数据,而数据里掺杂了不同的数据:

1->0;
sub
2->1;
sddd
  • 1
  • 2
  • 3
  • 4

我通过find函数来区分是否包含->来将它们区分,但是如果是sub这些字符,通过split就只能得到一个了,那么问题就出在于find,通过对find函数的深入解析,发现如果没找到元素是返回-1,所以问题很明显了,find("->") != -1才是真正的错误所在。

三、问题思考

其实找出问题所在并不像描述的那样简单,因为系统报错的位置在于split,那么我们就会纠结了split函数中,或者通过打印或者通过调试的方式才是解决方法的良好思路。在调试的时候我们就会在不属于我们需要匹配的位置进入if语句中,那么这时候我们就会发现该问题,最后找到find的问题所在,所以在发现问题时并非一味百度,而是自己先思考和调试后再寻求帮助,可能对自己提升会更大。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/201269
推荐阅读
相关标签
  

闽ICP备14008679号