【问题标题】:How to fix ValueError: not enough values to unpack (expected 2, got 1) [duplicate]如何修复ValueError:没有足够的值来解包(预期2,得到1)[重复]
【发布时间】: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

标签: python string dictionary text valueerror


【解决方案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))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-11
        相关资源
        最近更新 更多