如何修复ValueError:没有足够的值来解包(预期2,得到1)[重复]
Posted
技术标签:
【中文标题】如何修复ValueError:没有足够的值来解包(预期2,得到1)[重复]【英文标题】:How to fix ValueError: not enough values to unpack (expected 2, got 1) [duplicate] 【发布时间】:2021-12-04 19:06:17 【问题描述】:我正在处理一个文本文件,在该文件中我正在为登录页面制作 dict 和 zip 函数。但由于某些原因,它不时给我 ValueError 。这通常发生在我手动编辑或删除文本文件中的数据时,如果我创建另一个文本文件但我不能继续这样做,它将被修复。所以请帮助我。
文本文件
shanm, @Yolz3345
Jiaern, @Valorant
Steve, ImaG@nius
代码
#FOR LOGIN DETAILS
list_un = []
list_ps = []
members_list = open("det.txt", "r")
for info in members_list:
a,b = info.split(", ")
b = b.strip()
list_un.append(a)
list_ps.append(b)
data = dict(zip(list_un, list_ps))
我时常遇到的错误
a,b = info.split(", ")
ValueError: not enough values to unpack (expected 2, got 1)
【问题讨论】:
好像有一行没有“,” 首先分配给一个变量 -parts = info.split(", ")
然后检查 len(parts)
如果它是 2 那么你可以使用 a, b = parts
【参考方案1】:
正如评论中提到的,这表示没有逗号的行。最有可能在最后一行的末尾有一个返回字符,这意味着您在末尾有一个空行。
【讨论】:
【参考方案2】:很可能是文件中的最后一行为空,即\n
。
如何调试它?添加 try-catch 并打印 info
你怎么能解决它?要么删除文件中的最后一行,要么尝试捕获并忽略。
【讨论】:
【参考方案3】:您可以使用 .readlines() 函数获取包含除最后一行(如果为空)之外的所有行的列表。
新代码:
list_un = []
list_ps = []
members_list = open("det.txt", "r")
for info in members_list.readlines():
a,b = info.split(", ")
b = b.strip()
list_un.append(a)
list_ps.append(b)
data = dict(zip(list_un, list_ps))
【讨论】:
以上是关于如何修复ValueError:没有足够的值来解包(预期2,得到1)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python 2 - ValueError:没有足够的值来解包(预期 6,得到 1)
python OpenCV中的ValueError - 没有足够的值来解包(预期3,得到2)
ValueError:没有足够的值来解包(预期 3,得到 2)。啥地方出了错? [复制]
ValueError:没有足够的值来解包(预期为 2,得到 1)当试图在 python 中解包 dict 以使用 pandas 进行数据标记时