上下文: 使用CSV文件存储和读取数据,构建一个简单的库存维护程序。
库存文件中的数据:
product 1,"[200, 35.5, 37.0]"
products = {}
with open("stock.csv", "r") as csv_file:
csv_reader = csv.reader(csv_file)
for line in csv_reader:
products[line[0]] = line[1]
print(line)
print(products)
给出错误:
products[line[0]] = line[1]
IndexError: list index out of range
['product 1', '[200, 35.5, 37.0]']
{'product 1': '[200, 35.5, 37.0]'}
答案 0 :(得分:1)
在Python中,数组的索引为零
(即:line[0]
是第一个元素,line[1]
是第二个元素,依此类推。)
在这里:products[line[0]] = line[1]
中,您尝试访问line
的第二个元素,但是从您的示例来看,csv
文件仅包含一行,因此会出现错误。
答案 1 :(得分:0)
库存文件中的数据只有一行:
产品1,“ [200,35.5,37.0]”
因此,当您尝试在第7行中获取第[1]行时,您正在尝试在数据的第2行中获取该数据,该数据不存在。
答案 2 :(得分:0)
您所缺少的是
skipinitialspace =真
在您的csv_reader中。
这是有效的代码:
p = {}
with open("stock.csv", "r") as csv_file:
csv_reader = csv.reader(csv_file, skipinitialspace=True)
for line in csv_reader:
p[line[0]] = line[1]
print(p)
和结果:
{'product 1': '[200, 35.5, 37.0]'}