【问题标题】:Read CSV items with column name读取具有列名的 CSV 项目
【发布时间】:2017-05-24 20:44:59
【问题描述】:

读取 CSV 时,不要跳过第一行(标题),而是按编号读取行项:

with open('info.csv') as f:
    reader = csv.reader(f, delimiter=';')
    next(reader, None)
    for row in reader:
        name = row[0]
        blah = row[1]

是否有使用标题行访问行项目的内置方法?比如:

with open('info.csv') as f:
    reader = csv.reader(f, delimiter=';', useheader=True)
    for row in reader:
        name = row['name']
        blah = row['blah']

info.csv 有一个标题行:

名字;等等
约翰;你好2
迈克;你好2

【问题讨论】:

    标签: python csv


    【解决方案1】:

    您可以使用csv.DictReader 实例来获取此行为。

    文档中的示例:

    >>> with open('names.csv', newline='') as csvfile:
    ...     reader = csv.DictReader(csvfile)
    ...     for row in reader:
    ...         print(row['first_name'], row['last_name'])
    ...
    Eric Idle
    John Cleese
    

    阅读器自动从 csv 文件的第一行生成字典键。如果 csv 文件不包含标题行,您可以通过将列表传递给 DictReader 来设置键:

    fieldnames = ['first_name', 'last_name']
    reader = csv.DictReader(csvfile, fieldnames=fieldnames)
    

    【讨论】:

      【解决方案2】:

      您正在寻找DictReader

      with open('info.csv') as f:
          reader = csv.DictReader(f, delimiter=';')
          for row in reader:
              name = row['name']
              blah = row['blah']
      

      引用链接:

      创建一个像普通阅读器一样操作但映射 读入字典的信息,其键由可选参数给出 字段名参数。 ... 如果省略 fieldnames 参数,则第一行的值 csvfile 将用作字段名。

      【讨论】:

        【解决方案3】:

        是的,有。这就是 csv.DictReader 函数所做的 - 将行作为一个可迭代的 dicts 提供。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-14
          • 2020-05-26
          • 2023-03-03
          • 1970-01-01
          • 2013-09-25
          • 1970-01-01
          • 2018-06-18
          相关资源
          最近更新 更多