Python ValueError:没有足够的值来解包(预期值为11,实际值为1)
我为系统自动化写了一个脚本,但是我得到了标题中描述的错误。我下面的代码是脚本的相关部分。有什么问题Python ValueError:没有足够的值来解包(预期值为11,实际值为1),python,csv,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'
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']
这个错误消息是不言自明的
(a,b,c,d,e) = line.split()
期望line.split()
产生5个元素,但在您的情况下,它只产生1个元素。这可能是因为数据的格式不是您所期望的格式,可能是一个错误的行,也可能是一个空行—无法知道
要查看是哪一行导致了问题,可以添加如下调试语句:
if len(line.split()) != 11:
print line
正如Martin所建议的,您也可能使用了错误的分隔符进行拆分。用于行
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模块。非常快速和简单的方法可用。看起来您的数据有问题,它不是您期望的格式。可能是一个新行字符或数据中的一个空格在修改代码。99%的几率:某个地方有一个空行。@TigerhawkT3最初OP粘贴了他的代码。因为他是新来的,所以他把它适当地缩进,弄得一团糟。因此,我认为他可以通过一张不凌乱的图片。奇怪的是,OP导入了
csv
模块,但从未使用过它(甚至在函数中屏蔽了导入)。我更倾向于使用合适的csv.reader
,而不是使用不同的str.split()
@TigerhawkT3。链接到documentation.@Mr.Sharp我认为您的CSV中只有10个字段,因此您的错误现在必须是(预期为11,得到10)
。确保从=
的右侧到左侧分配等量的字段。