基本用途:
1、读取 CSV 文件:csv.reader 用来读取 CSV 文件并将每一行解析为一个列表(list)对象。每一行的字段(通常是由逗号分隔的值)将变成列表中的元素。
2、逐行读取数据:csv.reader 可以逐行读取 CSV 文件并返回一个迭代器,每次迭代返回一行数据。
**常见用法**
import csv# 打开CSV文件with open('example.csv', newline='') as csvfile: reader = csv.reader(csvfile) # 创建 CSV 读取器 for row in reader: # 逐行读取 print(row) # 每行是一个包含字段的列表假设
example.csv 的内容如下:name,age,cityAlice,30,New YorkBob,25,Los AngelesCharlie,35,Chicago输出将会是:
['name', 'age', 'city']['Alice', '30', 'New York']['Bob', '25', 'Los Angeles']['Charlie', '35', 'Chicago']**参数和配置**
csv.reader 接受多个参数,允许灵活地解析 CSV 文件:**
csvfile**:文件对象(通常由open() 函数返回的文件句柄)。**
delimiter**:指定分隔符,默认为逗号(,)。如果字段之间使用其他分隔符(例如制表符、分号等),可以设置这个参数。**
quotechar**:指定用于包裹字段的字符,默认是双引号(")。如果字段包含分隔符或换行符,可以使用引号将其包裹起来。**
skipinitialspace**:是否跳过字段分隔符后面的空格,默认为False。如果设置为True,分隔符后的空格会被忽略。**
quoting**:控制何时在 CSV 文件中使用引号,可以是以下几个值之一:csv.QUOTE_MINIMAL:仅当字段包含分隔符、换行符或引号时才使用引号。csv.QUOTE_ALL:对所有字段都使用引号。csv.QUOTE_NONNUMERIC:对所有非数字字段使用引号。csv.QUOTE_NONE:不使用引号。**示例:使用
delimiter 和quotechar**假设 CSV 文件内容如下,字段由分号分隔,并且某些字段被引号包围:
name;age;city"Alice";30;"New York""Bob";25;"Los Angeles""Charlie";35;"Chicago"可以使用
delimiter 和quotechar 来正确解析:import csvwith open('example.csv', newline='') as csvfile: reader = csv.reader(csvfile, delimiter=';', quotechar='"') for row in reader: print(row)输出将会是:
['name', 'age', 'city']['Alice', '30', 'New York']['Bob', '25', 'Los Angeles']['Charlie', '35', 'Chicago']**
csv.reader 的常见用途****读取 CSV 数据**:最直接的用途是读取并解析 CSV 文件,便于后续数据处理。例如,从文件中读取大量的表格数据并进行处理。
**导入数据到 Python 程序**:许多应用需要从外部 CSV 文件导入数据,
csv.reader 提供了一种简洁的方式。**数据清洗和转换**:读取 CSV 文件后,通常需要对数据进行清洗、过滤或转换。
csv.reader 提供了一个方便的迭代接口,可以逐行处理文件中的数据。**处理带有引号的字段**:CSV 文件中的字段可能包含逗号或换行符,这时字段通常被引号包围。
csv.reader 会自动处理这些字段,避免手动解析引号和分隔符。**处理大型数据文件**:
csv.reader 是一个迭代器,允许你逐行读取文件而不是一次性将文件加载到内存中,因此它可以有效地处理大型 CSV 文件。**结合
csv.DictReader 使用**如果 CSV 文件有列标题,你可以使用
csv.DictReader 代替csv.reader,它会将每一行数据转换为字典格式,字段名作为字典的键。这使得处理表格数据更加直观和方便。import csvwith open('example.csv', newline='') as csvfile: reader = csv.DictReader(csvfile) # 使用 DictReader 读取数据 for row in reader: print(row) # 每行是一个字典,字段名是键输出将是:
{'name': 'Alice', 'age': '30', 'city': 'New York'}{'name': 'Bob', 'age': '25', 'city': 'Los Angeles'}{'name': 'Charlie', 'age': '35', 'city': 'Chicago'}