Python操作CSV文件
CSV(Comma-Separated Values)是一种常见的数据交换格式,它使用逗号来分隔字段,并使用换行符来分隔行。在Python中,我们可以很方便地使用csv模块来读取、写入和操作CSV文件。
读取CSV文件
我们先来看一下如何读取一个CSV文件。假设我们有一个名为data.csv
的文件,内容如下:
Name, Age, Gender
Alice, 25, Female
Bob, 30, Male
Carol, 28, Female
我们可以使用csv模块中的reader
函数来读取这个文件,并遍历每一行数据:
import csv
with open('data.csv', 'r') as file:
reader = csv.reader(file)
for row in reader:
print(row)
运行上面的代码,输出如下:
['Name', 'Age', 'Gender']
['Alice', '25', 'Female']
['Bob', '30', 'Male']
['Carol', '28', 'Female']
我们可以看到,每一行数据被转换成了一个列表,方便我们进行处理。
写入CSV文件
接下来,我们看一下如何将数据写入到一个CSV文件中。假设我们有一个字典列表data
,内容如下:
data = [
{'Name': 'David', 'Age': 35, 'Gender': 'Male'},
{'Name': 'Eve', 'Age': 32, 'Gender': 'Female'}
]
我们可以使用csv模块中的writer
函数来写入数据到一个新的CSV文件output.csv
中:
import csv
data = [
{'Name': 'David', 'Age': 35, 'Gender': 'Male'},
{'Name': 'Eve', 'Age': 32, 'Gender': 'Female'}
]
fields = ['Name', 'Age', 'Gender']
with open('output.csv', 'w') as file:
writer = csv.DictWriter(file, fieldnames=fields)
writer.writeheader()
for row in data:
writer.writerow(row)
运行上面的代码,我们将会得到一个新的output.csv
文件,内容如下:
Name, Age, Gender
David, 35, Male
Eve, 32, Female
操作CSV文件
除了读取和写入CSV文件,csv模块还提供了一些其他功能,比如读取CSV文件的第一行作为表头,指定字段的分隔符等。下面是一些常用的示例代码:
读取CSV文件的第一行作为表头
假设我们有一个CSV文件data.csv
,内容如下:
Id|Name|Age
1|Alice|25
2|Bob|30
3|Carol|28
我们可以指定分隔符来读取这个文件,并将第一行作为表头:
import csv
with open('data.csv', 'r') as file:
reader = csv.DictReader(file, delimiter='|')
for row in reader:
print(row)
运行上面的代码,输出如下:
{'Id': '1', 'Name': 'Alice', 'Age': '25'}
{'Id': '2', 'Name': 'Bob', 'Age': '30'}
{'Id': '3', 'Name': 'Carol', 'Age': '28'}
可以看到,我们成功地指定了分隔符,并将第一行作为了表头。
写入CSV文件时忽略空行
有时候我们在写入CSV文件时需要忽略空行,可以使用extrasaction='ignore'
参数来实现:
import csv
data = [
{'Name': 'David', 'Age': 35, 'Gender': 'Male'},
{'Name': '', 'Age': '', 'Gender': ''}
]
fields = ['Name', 'Age', 'Gender']
with open('output.csv', 'w') as file:
writer = csv.DictWriter(file, fieldnames=fields, extrasaction='ignore')
writer.writeheader()
for row in data:
writer.writerow(row)
运行上面的代码,output.csv
文件将只包含一行数据David,35,Male
,空行将被忽略。
总结
通过使用csv模块,我们可以很方便地读取、写入和操作CSV文件。除了上面介绍的功能,csv模块还提供了更多的方法和参数,通过查看官方文档我们可以更加深入地了解其功能和用法。