CSV(Comma-Separated Values)是一种常见的电子表格数据存储格式,CSV文件由多行多列的数据组成,每行数据由逗号分隔,因此CSV文件也被称为逗号分隔文件。Python中的csv模块可以用来读写CSV文件,本文将从多个角度分析Python csv文件记录流程的代码解析。
1. 读取CSV文件
在Python中使用csv模块读取CSV文件,需要先打开CSV文件,然后将文件对象传入csv.reader()函数中,代码如下:
```python
import csv
with open('data.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
print(row)
```
- 第一行导入csv模块
- 第二行打开CSV文件data.csv并赋值给变量f,使用with语句可以自动关闭文件
- 第三行使用csv.reader()函数将文件对象f传入,并将返回的reader对象赋值给变量reader
- 第四行使用for循环遍历reader对象中的每一行数据,并打印出来
2. 写入CSV文件
在Python中使用csv模块写入CSV文件,也需要先打开CSV文件,然后将文件对象传入csv.writer()函数中,代码如下:
```python
import csv
with open('output.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['Name', 'Age', 'Gender'])
writer.writerow(['Alice', 25, 'Female'])
writer.writerow(['Bob', 30, 'Male'])
```
- 第一行导入csv模块
- 第二行打开CSV文件output.csv并赋值给变量f,使用with语句可以自动关闭文件。'w'表示写入模式,newline=''表示写入的行末不需要添加额外的空行。
- 第三行使用csv.writer()函数将文件对象f传入,并将返回的writer对象赋值给变量writer
- 第四行使用writerow()方法写入表头
- 第五行使用writerow()方法写入第一行数据
- 第六行使用writerow()方法写入第二行数据
3. 指定分隔符
虽然CSV文件通常以逗号作为分隔符,但有些CSV文件使用其他分隔符,如分号、制表符等。使用csv模块读写CSV文件时,可以通过传递delimiter参数指定分隔符,代码如下:
```python
import csv
# 读取分号分隔的CSV文件
with open('data.csv', 'r') as f:
reader = csv.reader(f, delimiter=';')
for row in reader:
print(row)
# 写入制表符分隔的CSV文件
with open('output.csv', 'w', newline='') as f:
writer = csv.writer(f, delimiter='\t')
writer.writerow(['Name', 'Age', 'Gender'])
writer.writerow(['Alice', 25, 'Female'])
writer.writerow(['Bob', 30, 'Male'])
```
- 第一行导入csv模块
- 第三行使用csv.reader()函数读取分号分隔的CSV文件,将分隔符设置为';'
- 第六行使用csv.writer()函数写入制表符分隔的CSV文件,将分隔符设置为'\t'
4. 处理带有引号的数据
CSV文件中的数据可能包含引号,这时候需要将引号进行转义,使用csv模块可以很方便地处理带有引号的数据,代码如下:
```python
import csv
# 读取带有引号的CSV文件
with open('data.csv', 'r') as f:
reader = csv.reader(f, quoting=csv.QUOTE_ALL)
for row in reader:
print(row)
# 写入带有引号的CSV文件
with open('output.csv', 'w', newline='') as f:
writer = csv.writer(f, quoting=csv.QUOTE_ALL)
writer.writerow(['Name', 'Age', 'Gender'])
writer.writerow(['Alice', 25, 'Female'])
writer.writerow(['Bob', 30, 'Male'])
```
- 第一行导入csv模块
- 第三行使用csv.reader()函数读取带有引号的CSV文件,将引号设置为全部引用
- 第六行使用csv.writer()函数写入带有引号的CSV文件,将引号设置为全部引用