【问题标题】:Reading csv file to dictionary - only reads first key+value将 csv 文件读取到字典 - 仅读取第一个键 + 值
【发布时间】:2021-06-19 09:09:03
【问题描述】:

我有一个函数可以将 csv 文件读入字典,但下一个迭代器似乎不起作用,因为它只读取第一对键+值。

reader = csv.DictReader(open(folder_path+'/information.csv'))
info = next(reader)

我的 csv 文件的结构是这样的:

Test Name
mono1
Date
18/03/2021
Time
18:25
Camera
monochromatic

字典的返回是:

{'Test Name': 'mono1'}

知道发生了什么吗?还是一种无需更改结构即可读取文件的更好方法?

【问题讨论】:

  • "但是下一个迭代器似乎不起作用,因为它只读取第一对键+值。"我不确定您希望next 做什么,但它会为您提供迭代器中的下一个值。在这种情况下,第一个值。可能你的意思是list(reader)
  • 阅读csv.DictReader 的文档。列标题用作键。行值用作字典的值。因此,如果您多执行几次next(reader),您将获得{'Test Name': 'Date'}{'Test Name': '18/03/2021'}
  • @PranavHosangadi 我现在明白了!谢谢!

标签: python csv dictionary


【解决方案1】:

您的文件不是 CSV。它的结构需要如下:

Test Name,Date,Time,Camera
mono1,18/03/2021,18:25,monochromatic

阅读内容:

import csv

with open('test.csv',newline='') as f:
    reader = csv.DictReader(f)
    for line in reader:
        print(line)

输出:

{'Test Name': 'mono1', 'Date': '18/03/2021', 'Time': '18:25', 'Camera': 'monochromatic'}

要读取您拥有的文件,您可以使用:

with open('test.txt') as f:
    lines = iter(f)  # An iterator over the lines of the file
    info = {}
    for line in lines:  # gets a line (key)
        # rstrip() removes the newline at the end of each line
        info[line.rstrip()] = next(lines).rstrip() # next() fetches another line (value)
print(info)

(相同的输出)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 2018-12-15
    • 2021-08-20
    • 2018-06-22
    • 1970-01-01
    相关资源
    最近更新 更多