ValueError:没有足够的值来解包(预期11,得1)

时间:2016-01-06 06:47:41

标签: python csv

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

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']

3 个答案:

答案 0 :(得分:5)

对于

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

答案 1 :(得分:3)

错误消息相当不言自明

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

期望line.split()产生5个元素,但在你的情况下,它只产生1个元素。这可能是因为数据不是您期望的格式,流氓格式错误的行,或者可能是空行 - 没有办法知道。

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

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

正如马丁所说,你可能也会分裂错误的分隔符。

答案 2 :(得分:0)

您的数据看起来有问题,它不是您期望的格式。它可能是数据中的新行字符或空白空间,用于修改代码。