CSV(Comma-Separated Values)是一种常见的数据交换格式,每一行代表一条记录,每条记录由多个字段组成,字段之间用逗号分隔。Python 提供了 csv
模块来处理 CSV 文件。
CSV 文件通常分为以下几种类型:
CSV 文件广泛应用于数据导入导出、日志记录、配置文件等场景。
假设我们有一个 CSV 文件 data.csv
,内容如下:
name,age,city
Alice,30,New York
Bob,25,Los Angeles
我们希望在 age
列上增加 1 年,并将结果写入新的 CSV 文件 updated_data.csv
。
import csv
# 读取原始 CSV 文件
with open('data.csv', mode='r', newline='') as infile:
reader = csv.DictReader(infile)
data = [row for row in reader]
# 修改 age 列
for row in data:
row['age'] = int(row['age']) + 1
# 将修改后的数据写入新的 CSV 文件
with open('updated_data.csv', mode='w', newline='') as outfile:
fieldnames = ['name', 'age', 'city']
writer = csv.DictWriter(outfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(data)
原因:CSV 文件可能使用了不同的编码格式(如 UTF-8、GBK 等)。
解决方法:在打开文件时指定正确的编码格式。
with open('data.csv', mode='r', encoding='utf-8-sig', newline='') as infile:
reader = csv.DictReader(infile)
data = [row for row in reader]
原因:写入文件时未指定正确的编码格式。
解决方法:在打开文件时指定正确的编码格式。
with open('updated_data.csv', mode='w', encoding='utf-8-sig', newline='') as outfile:
fieldnames = ['name', 'age', 'city']
writer = csv.DictWriter(outfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(data)
通过以上方法,你可以轻松地在 CSV 文件的特定列上进行读写操作,并解决常见的编码问题。
领取专属 10元无门槛券
手把手带您无忧上云