Python操作CSV文件

Python操作CSV文件

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模块还提供了更多的方法和参数,通过查看官方文档我们可以更加深入地了解其功能和用法。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程