Python中的CSV文件处理技巧

1. CSV文件简介

CSV是一种常见的文本文件格式,它的全称是“逗号分隔值”(Comma-Separated Values)。它是一种独立于软件和硬件平台的文件格式,用于数据交换和存储。CSV文件是以纯文本的方式存储数据,不包含任何格式或格式化样式。因此,CSV文件便于用各种程序和操作系统进行处理。Python提供了一个csv模块,用于在Python中读取、写入和操作CSV文件。

2. CSV文件的读取

2.1 读取方法

Python中读取CSV文件的方法通常有两种:

使用Python内置的csv模块

使用pandas库

本文仅介绍第一种使用csv模块的方法。使用csv模块时,需要首先导入这个模块:

import csv

2.2 读取示例

假设有一个名为“students.csv”的CSV文件,其内容如下:

name,age,gender

Tom,22,Male

Marry,21,Female

John,23,Male

接下来,我们可以使用csv模块中的reader()函数读取这个CSV文件,并用for循环遍历每一行:

with open('students.csv', 'r') as csvfile:

reader = csv.reader(csvfile)

for row in reader:

print(row)

运行结果为:

['name', 'age', 'gender']

['Tom', '22', 'Male']

['Marry', '21', 'Female']

['John', '23', 'Male']

我们可以看到,使用csv模块读取CSV文件后,返回一个可迭代的reader对象,其中每一行都是一个列表。

3. CSV文件的写入

3.1 写入方法

如果要将数据写入CSV文件,可以使用csv模块中的writer()函数。首先,需要通过open()函数打开一个CSV文件,并将文件打开模式设置为写入('w')。然后,将文件对象作为参数传递给writer()函数,创建一个writer对象。

示例代码如下:

with open('new_students.csv', 'w') as csvfile:

writer = csv.writer(csvfile)

writer.writerow(['name', 'age', 'gender'])

writer.writerow(['Tom', '22', 'Male'])

writer.writerow(['Marry', '21', 'Female'])

writer.writerow(['John', '23', 'Male'])

上述代码将创建一个名为“new_students.csv”的CSV文件,并将四行数据写入该文件中。

3.2 CSV文件的写入示例

下面的代码是完整的CSV文件的读取和写入的示例:

import csv

# 读取CSV文件

with open('students.csv', 'r') as csvfile:

reader = csv.reader(csvfile)

rows = [row for row in reader]

# 在读取的基础上添加新的行

rows.append(['Kate', '24', 'Female'])

# 将数据写入CSV文件

with open('new_students.csv', 'w') as csvfile:

writer = csv.writer(csvfile)

for row in rows:

writer.writerow(row)

运行结果是,前面读取的CSV文件的每一行将以同样的格式写入新的CSV文件,并且新的CSV文件中多了一行新的数据(Kate,24,Female)。

4. CSV文件中数据的格式化

CSV文件中的每个单元格都是字符串类型的数据,因此在处理CSV文件时,需要将数据转换为正确的类型,例如整数、浮点数或日期。这可以通过在读取CSV文件时指定所需的类型来实现。

4.1 数据格式化示例

下面的代码演示了如何使用csv模块和Python的日期时间模块将CSV文件中的数据格式化为正确的类型:

import csv

from datetime import datetime

# 读取CSV文件并格式化数据

with open('sales.csv', 'r') as csvfile:

reader = csv.reader(csvfile)

rows = []

for row in reader:

date = datetime.strptime(row[0], '%m/%d/%Y')

revenue = float(row[1])

rows.append([date, revenue])

# 对格式化后的数据进行操作

total_revenue = 0

for row in rows:

total_revenue += row[1]

# 将结果写入另一个CSV文件

with open('formatted_sales.csv', 'w') as csvfile:

writer = csv.writer(csvfile)

writer.writerow(['date', 'revenue'])

for row in rows:

writer.writerow(row)

writer.writerow(['Total', total_revenue])

运行结果是,读取一个名为“sales.csv”的CSV文件,并将其中的第一列数据解析为日期格式,将第二列数据解析为浮点数,并将这些数据按指定格式重新写入一个名为“formatted_sales.csv”的CSV文件。在新文件中添加了一行总收入(Total)。

5. 结语

这篇文章介绍了Python中处理CSV文件的基本技巧。我们了解了如何使用csv模块读取和写入CSV文件,并且了解了如何格式化CSV文件中的数据。如果你打算处理海量的或者非常复杂的CSV文件,可能需要使用pandas库。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签