无法从CSV文件读取数据并将其存储在词典中

时间:2019-06-11 13:14:24

标签: python python-3.x csv

上下文: 使用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]'}

3 个答案:

答案 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)

来自this SO answer

您所缺少的是

  

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