优草派  >   Python

python 写csv

马婷            来源:优草派

Python 写 CSVCSV(Comma Separated Values)即逗号分隔值,是一种通用的文件格式,常用于数据的导入和导出。Python 作为一种简单易学、功能强大的编程语言,也提供了丰富的库函数和方法,可以轻松地写入和读取 CSV 文件。本文将从多个角度分析 Python 写 CSV 的方法和技巧。

1. CSV 文件的写入

python 写csv

Python 中处理 CSV 文件的主要模块是 csv,它提供了多种方法来写入 CSV 文件。下面是一个简单的例子:

```python

import csv

with open('data.csv', mode='w', newline='') as file:

writer = csv.writer(file)

writer.writerow(['Name', 'Age', 'Gender'])

writer.writerow(['Alice', 20, 'Female'])

writer.writerow(['Bob', 25, 'Male'])

```

- open() 函数用于打开文件,mode 参数指定文件的打开模式,'w' 表示写入模式;

- newline='' 参数用于避免写入 CSV 文件时出现空行;

- csv.writer() 函数用于创建一个 writer 对象,可以通过它来写入 CSV 文件;

- writerow() 方法用于向 CSV 文件写入一行数据,参数为一个列表,列表中的每个元素都对应一列数据。

运行上面的代码,会生成一个名为 data.csv 的文件,文件内容如下:

```

Name,Age,Gender

Alice,20,Female

Bob,25,Male

```

2. CSV 文件的分隔符

虽然 CSV 文件名中的“C”表示逗号分隔值,但实际上 CSV 文件的分隔符可以是任意字符。在 Python 中,默认的 CSV 分隔符是逗号,如果需要使用其他分隔符,可以通过 delimiter 参数进行设置。下面是一个例子:

```python

import csv

with open('data.csv', mode='w', newline='') as file:

writer = csv.writer(file, delimiter='\t')

writer.writerow(['Name', 'Age', 'Gender'])

writer.writerow(['Alice', 20, 'Female'])

writer.writerow(['Bob', 25, 'Male'])

```

- delimiter='\t' 表示使用制表符作为分隔符。

运行上面的代码,会生成一个名为 data.csv 的文件,文件内容如下:

```

Name Age Gender

Alice 20 Female

Bob 25 Male

```

3. CSV 文件的编码

CSV 文件的编码通常是 UTF-8 或 GBK,如果不指定编码,Python 默认使用系统的编码。为了避免编码问题,可以通过 encoding 参数进行设置。下面是一个例子:

```python

import csv

with open('data.csv', mode='w', newline='', encoding='utf-8') as file:

writer = csv.writer(file)

writer.writerow(['姓名', '年龄', '性别'])

writer.writerow(['张三', 20, '男'])

writer.writerow(['李四', 25, '女'])

```

- encoding='utf-8' 表示使用 UTF-8 编码。

运行上面的代码,会生成一个名为 data.csv 的文件,文件内容如下:

```

姓名,年龄,性别

张三,20,男

李四,25,女

```

4. CSV 文件的追加写入

如果需要向一个已经存在的 CSV 文件中追加数据,可以使用 mode='a' 参数。下面是一个例子:

```python

import csv

with open('data.csv', mode='a', newline='', encoding='utf-8') as file:

writer = csv.writer(file)

writer.writerow(['王五', 30, '男'])

writer.writerow(['赵六', 35, '女'])

```

运行上面的代码,会向名为 data.csv 的文件中追加两行数据,文件内容如下:

```

姓名,年龄,性别

张三,20,男

李四,25,女

王五,30,男

赵六,35,女

```

5. CSV 文件的读取

除了写入 CSV 文件,Python 还提供了 csv.reader() 函数用于读取 CSV 文件。下面是一个例子:

```python

import csv

with open('data.csv', newline='', encoding='utf-8') as file:

reader = csv.reader(file)

for row in reader:

print(row)

```

- newline='' 参数用于避免读取 CSV 文件时出现空行。

运行上面的代码,会逐行读取名为 data.csv 的文件中的数据,并输出到控制台:

```

['姓名', '年龄', '性别']

['张三', '20', '男']

['李四', '25', '女']

['王五', '30', '男']

['赵六', '35', '女']

```

6. CSV 文件的转换

有时候,需要将 CSV 文件转换为其他格式,比如 Excel 文件或数据库表。Python 也提供了相应的库函数和方法来实现这一功能。下面是一个例子:

```python

import csv

import openpyxl

wb = openpyxl.Workbook()

ws = wb.active

with open('data.csv', newline='', encoding='utf-8') as file:

reader = csv.reader(file)

for row in reader:

ws.append(row)

wb.save('data.xlsx')

```

- openpyxl 是一个用于操作 Excel 文件的库,需要先安装;

- openpyxl.Workbook() 函数用于创建一个新的 Excel 文件;

- wb.active 表示当前的工作表对象;

- ws.append(row) 方法用于向工作表中添加一行数据,参数为一个列表,列表中的每个元素都对应一列数据。

运行上面的代码,会将名为 data.csv 的文件转换为名为 data.xlsx 的 Excel 文件。

7. CSV 文件的异常处理

在写入和读取 CSV 文件时,可能会出现各种异常情况,比如文件不存在、文件格式错误等。为了保证程序的健壮性,需要进行相应的异常处理。下面是一个例子:

```python

import csv

try:

with open('data.csv', mode='w', newline='', encoding='utf-8') as file:

writer = csv.writer(file)

writer.writerow(['Name', 'Age', 'Gender'])

writer.writerow(['Alice', 20, 'Female'])

writer.writerow(['Bob', 25, 'Male'])

except Exception as e:

print('Error:', e)

```

- try/except 语句用于捕获可能出现的异常,保证程序的正常运行;

- Exception as e 表示将异常对象保存到变量 e 中;

- print('Error:', e) 用于输出异常信息。

结语

本文从多个角度分析了 Python 写 CSV 的方法和技巧,包括 CSV 文件的写入、CSV 文件的分隔符、CSV 文件的编码、CSV 文件的追加写入、CSV 文件的读取、CSV 文件的转换和 CSV 文件的异常处理。Python 的 csv 模块为 CSV 文件的读写提供了方便的接口,同时 Python 还提供了丰富的库函数和方法,可以轻松地将 CSV 文件转换为其他格式。掌握这些技巧,可以方便地处理各种 CSV 数据,提高工作效率。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。