【问题标题】:DictReader fieldnames vs csv reader first rowDictReader 字段名与 csv 阅读器第一行
【发布时间】:2012-03-26 17:28:51
【问题描述】:

我需要检查 csv 文件中的列标题,并且只需要此任务的标题值,而不需要下面的值(还)。现在我正在使用 DictReader 和 fieldnames 来获取列标题,主要是因为代码更清楚地知道使用这种方法发生了什么。是否有任何理由(性能或其他)只使用标准 csv 阅读器,在顶列中作为标题读取,然后关闭文件?

【问题讨论】:

    标签: python csv


    【解决方案1】:

    我想 DictReader 的效率只会比 csv 阅读器略低(不过我从未见过基准测试)。 DictReader 提供的是更好的可读性。当您访问列时,任何阅读您的代码的人都可以看到发生了什么

    reader = csv.DictReader(f.open)
    for line_dict in reader:
       line_dict['First Column']
       line_dict['Second Column']
    

    反对只是 csv 阅读器的数字索引。如果您正在处理包含许多列的文件,那么必须记住列名的索引可能会令人抓狂。我认为 DictReader 的可读性胜出。

    【讨论】:

    • 此外,代码更有弹性——如果有人重新排序 CSV 文件(例如,在中间添加一个新列),它不会破坏您的代码。
    • 当使用没有输入字段名的 DictReader 时,DictReader._fieldnames 仅在读取第一个数据行后可用。所以这是一个减号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 2022-01-23
    • 2023-03-15
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多