在Python中处理CSV(逗号分隔值)文件是一个常见的任务,尤其是当你需要读取或写入表格数据时。Python的csv
模块提供了读写CSV文件的功能。以下是一些基本示例,展示如何使用Python的csv
模块来处理CSV文件。
读取CSV文件
要读取CSV文件,你可以使用csv.reader
类。以下是一个简单的例子:
python复制代码
import csv | |
# 打开CSV文件 | |
with open('example.csv', mode='r', newline='', encoding='utf-8') as file: | |
csv_reader = csv.reader(file) | |
# 遍历CSV文件的每一行 | |
for row in csv_reader: | |
print(row) # row是一个列表,包含了当前行的所有值 |
如果你想要将CSV文件中的数据读入到一个字典中(假设第一行是列名),可以使用csv.DictReader
:
python复制代码
import csv | |
with open('example.csv', mode='r', newline='', encoding='utf-8') as file: | |
csv_reader = csv.DictReader(file) | |
# 遍历CSV文件的每一行,每行被读取为一个字典 | |
for row in csv_reader: | |
print(row) # row是一个字典,键是列名,值是对应的数据 |
写入CSV文件
写入CSV文件,你可以使用csv.writer
类。以下是一个简单的例子:
python复制代码
import csv | |
# 定义要写入的数据 | |
rows = [ | |
['Name', 'Age', 'City'], | |
['Alice', 24, 'New York'], | |
['Bob', 19, 'Los Angeles'], | |
['Charlie', 35, 'Chicago'] | |
] | |
# 写入CSV文件 | |
with open('output.csv', mode='w', newline='', encoding='utf-8') as file: | |
csv_writer = csv.writer(file) | |
# 遍历数据,并写入CSV文件 | |
for row in rows: | |
csv_writer.writerow(row) |
如果你想要将数据作为字典写入CSV文件(假设你已经有了列名),可以使用csv.DictWriter
:
python复制代码
import csv | |
# 定义列名和要写入的数据 | |
fieldnames = ['Name', 'Age', 'City'] | |
rows = [ | |
{'Name': 'Alice', 'Age': 24, 'City': 'New York'}, | |
{'Name': 'Bob', 'Age': 19, 'City': 'Los Angeles'}, | |
{'Name': 'Charlie', 'Age': 35, 'City': 'Chicago'} | |
] | |
# 写入CSV文件 | |
with open('output_dict.csv', mode='w', newline='', encoding='utf-8') as file: | |
csv_writer = csv.DictWriter(file, fieldnames=fieldnames) | |
# 写入列名 | |
csv_writer.writeheader() | |
# 遍历数据,并写入CSV文件 | |
for row in rows: | |
csv_writer.writerow(row) |
注意事项
- 当打开文件时,指定
newline=''
是为了防止在写入时产生额外的空行。 - 指定
encoding='utf-8'
(或你需要的任何编码)是为了确保正确处理非ASCII字符。 csv.reader
和csv.writer
类直接处理由逗号分隔的文本。如果你的CSV文件使用其他分隔符(如制表符),则可以使用delimiter
参数(例如,csv.reader(file, delimiter='\t')
)。- 当处理大型CSV文件时,请考虑使用生成器(如
csv.reader
)来避免一次性将所有数据加载到内存中。