python操作csv格式文件之csv.DictReader()方法

  • Post category:Python

使用Python操作CSV文件是日常数据处理中经常遇到的任务。CSV文件在数据传输、数据存储、数据共享等方面都有广泛的应用。Python提供了许多CSV文件操作的模块和方法。其中之一就是csv.DictReader()方法。下面我将详细讲解这个方法的使用方法。

csv.DictReader()方法的作用

csv.DictReader()方法是Python csv模块中提供的一种从CSV文件读取数据的方法。它能读取CSV文件中的每一行数据,并将每一行数据转换成一个字典。字典的键值对由CSV文件的表头和行数据构成。使用这种方法,可以方便地通过表头来访问CSV文件中的数据。

csv.DictReader()方法的基本用法

使用csv.DictReader()方法需要引入csv模块:

import csv

csv.DictReader()方法的基本语法如下:

csv.DictReader(file, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)

参数说明:

  • file:CSV文件对象,必选。
  • fieldnames:CSV文件的表头,可选。如果不指定fieldnames,则使用文件的第一行作为表头。
  • restkey:如果数据行的字段数比表头(fieldnames)要少,那么超出部分将保存在字典中,并使用restkey作为键,可选。
  • restval:如果数据行的字段数比表头(fieldnames)要多,那么缺少部分将使用restval填充,可选。
  • dialect:CSV数据格式,可选。
  • args:文件读取参数,可选。
  • kwds:文件读取参数,可选。

csv.DictReader()方法的示例

接下来,我们通过两个示例来说明csv.DictReader()方法的使用。

示例1:读取CSV文件中的数据

假设我们有一个students.csv文件,它的内容如下:

name,age,gender,score
张三,18,男,90
李四,19,女,85
王五,20,男,92

我们想要读取这个CSV文件中的所有数据,并将每一行数据转换成一个字典。使用csv.DictReader()方法可以非常方便地实现这个操作,代码如下:

import csv

with open('students.csv', 'r', encoding='utf-8') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(row)

输出结果如下:

{'name': '张三', 'age': '18', 'gender': '男', 'score': '90'}
{'name': '李四', 'age': '19', 'gender': '女', 'score': '85'}
{'name': '王五', 'age': '20', 'gender': '男', 'score': '92'}

每一行数据被转换成了一个字典,字典的键值对由CSV文件的表头和行数据构成。

示例2:指定表头读取CSV文件中的数据

在上一个示例中,我们使用了CSV文件中的第一行作为表头。如果我们想要指定表头,则可以在调用csv.DictReader()方法时传递一个列表作为fieldnames参数,列表中的每个元素都是一个表头。代码如下:

import csv

fieldnames = ['name', 'age', 'gender', 'score']

with open('students.csv', 'r', encoding='utf-8') as csvfile:
    reader = csv.DictReader(csvfile, fieldnames=fieldnames)
    for row in reader:
        print(row)

输出结果与上一个示例相同。

总结

csv.DictReader()方法可以将CSV文件中的每一行数据转换成一个字典,字典的键值对由CSV文件的表头和行数据构成。可以指定表头或使用CSV文件的第一行作为表头。csv.DictReader()方法可以方便地处理CSV文件中的数据,使用时需要注意参数的设置。