【问题标题】:ValueError: not enough values to unpack (expected 11, got 1)ValueError:没有足够的值来解包(预期 11,得到 1)
【发布时间】:2016-04-10 04:39:44
【问题描述】:

我为系统自动化编写了一个脚本,但我收到了标题中描述的错误。我下面的代码是脚本的相关部分。有什么问题?

import csv
import os

DIR = "C:/Users/Administrator/Desktop/key_list.csv"

def Customer_List(csv):
    customer = open(DIR)
        for line in customer:
            row = []
            (row['MEM_ID'],
             row['MEM_SQ'],
             row['X_AUTH_USER'],
             row['X_AUTH_KEY'],
             row['X_STORAGE_URL'],
             row['ACCESSKEY'],
             row['ACCESSKEYID'],
             row['ACCESSKEY1'],
             row['ACCESSKEYID1'],
             row['ACCESSKEY2'],
             row['ACCESSKEYID2'])=line.split()
            if csv == row['MEM_ID']:
                customer.close()
                return(row)
            else:
                print ("Not search for ID")
                return([])

id_input = input("Please input the Customer ID(Email): ")
result = Customer_List(id_input)

if result:
    print ("iD:    " + id['MEM_ID']

【问题讨论】:

  • 99% 的机会:某处有空行。
  • @TigerhawkT3 最初,OP 粘贴了他的代码。因为他是新人,所以他确实缩进了它,这很乱。所以我认为他认为他可以通过一张不凌乱的照片。

标签: python csv


【解决方案1】:

为了线

line.split()

你在分裂什么?看起来像 CSV,所以试试

line.split(',')

例子:

"one,two,three".split()  # returns one element ["one,two,three"]
"one,two,three".split(',')  # returns three elements ["one", "two", "three"]

正如@TigerhawkT3 提到的,最好使用 CSV 模块。提供了令人难以置信的快速简便方法here

【讨论】:

  • 奇怪的是,OP 导入了 csv 模块但从不使用它(甚至屏蔽了函数中的导入)。我更倾向于使用正确的csv.reader,而不是使用不同的str.split()
  • @TigerhawkT3 同意。链接到文档。
  • @Mr.Sharp 我认为您的 CSV 中只有 10 个字段,因此您现在的错误必须是 (expected 11, got 10)。确保从 = 的右侧到左侧分配相同数量的字段。
【解决方案2】:

错误信息是不言自明的

(a,b,c,d,e) = line.split()

预计 line.split() 会产生 5 个元素,但在您的情况下,它只会产生 1 个元素。这可能是因为数据不是您期望的格式、恶意格式错误的行,或者可能是空行 - 无法知道。

要查看导致问题的行,您可以添加一些调试语句,如下所示:

if len(line.split()) != 11:
    print line

正如 Martin 建议的那样,您也可能在错误的分隔符上进行拆分。

【讨论】:

    【解决方案3】:

    您的数据似乎有问题,它不是您期望的格式。它可能是数据中的换行符或空格,正在修改您的代码。

    【讨论】:

      猜你喜欢
      • 2016-07-05
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 2019-02-08
      • 2018-04-21
      • 1970-01-01
      相关资源
      最近更新 更多