如何修复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)

ValueError:没有足够的值来解包(预期为 2,得到 1)当试图在 python 中解包 dict 以使用 pandas 进行数据标记时

OPEN_CV 错误没有足够的值来解包(预期 3,得到 2)[重复]