Python中出现ValueError: not enough values to unpack (expected 2, got 1)的原因及问题解决方法
一、问题描述:
import pickle
f = open('record1.txt','r')
girl = []
boy = []
count = 0
#content = f.readlines()
for eachline in f:
if '=========' not in eachline:
(role, spoken) = eachline.split(':',1)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
运行报错:
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\python学习\lianxi\test30-1\pickle-file.py", line 10, in <module>
(role, spoken) = eachline.split(':',1)
ValueError: not enough values to unpack (expected 2, got 1)
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
错误提示: not enough values to unpack (expected 2, got 1)没有足够的值来解包(需要2,得到1)。程序要求将读取的每行以 : 为界分为两部分,如果找不到 : 就会报错。
二、错误原因:
1、文档record1.txt内容中的‘:’是中文冒号,而程序中“(role, spoken) = eachline.split(’:’,1)”的‘:’是英文冒号,在切片的时候找不到对应的冒号,所以会报错
2、record1.txt文件多了换行符,有些行只有换行符
record1.txt中的内容是从网上直接查找的复制到txt文件的,复制的内容在下面这个链接里面:[小甲鱼教学视频中的record.txt文件内容]
(https://blog.csdn.net/guokaigdg/article/details/82725551),
网页显示内容:
直接复制到txt文件后如下图:
由于复制完成之后是一个大段,并没有换行,所以手动进行调整如下:
使用调整之后的文件运行程序,会报错,奖调整之后文件的内容复制到word文件中如下:
发现空行,且空行中只有回车符,这是由于从网页复制过来时,每句话的末尾带有换行符,但在txt文件中并没有体现出来,后续自己又手动回车调整了文件导致的多了只有回车的空行。
从网页复制的内容直接复制到word文件中,如下:
可以发现每行后面都自带换行符
解决办法:将只有换行符的空行删掉,删除方法参考:删除空行
三、避免出现这种错误的方法
在读取每一行时判断是否是空行,是空行则跳过此行,读取下一行
参考链接:record.txt内容
删除多余回车符解决方法