读取包含列名称的CSV项目

时间:2017-01-10 11:16:37

标签: python csv

读取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有一个标题行:

  

名;等等
  约翰; Hello2
  迈克; Hello2

3 个答案:

答案 0 :(得分:27)

您正在寻找DictReader

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

引用链接:

  

创建一个像普通读者一样操作的对象,但是映射它   读入dict的信息,其密钥由可选项给出   fieldnames参数。   ...   如果省略fieldnames参数,则为第一行中的值   csvfile将用作字段名。

答案 1 :(得分:4)

您可以使用csv.DictReader实例来解决此问题。

文档示例:

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

答案 2 :(得分:3)

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