Python CSV 教程-读写 CSV
Python CSV 教程显示了如何使用 Python csv 模块读取和写入 CSV 数据。
CSV
CSV(逗号分隔值)是在电子表格和数据库中使用的非常流行的导入和导出数据格式。 CSV 文件中的每一行都是一个数据记录。 每个记录由一个或多个字段组成,用逗号分隔。 CSV 是一种非常简单的数据格式,但是可以有很多差异,例如不同的定界符,换行或引号字符。
Python CSV 模块
csv
模块实现用于以 CSV 格式读取和写入表格数据的类。 csv
模块的reader
和writer
对象读取和写入序列。 程序员还可以使用DictReader
和DictWriter
类以字典形式读取和写入数据。
Python CSV 方法
下表显示了 Python csv 方法:
方法 | 描述 |
---|---|
csv.reader |
返回一个遍历 CSV 文件各行的读取器对象 |
csv.writer |
返回将数据写入 CSV 文件的写入器对象 |
csv.register_dialect |
注册 CSV 方言 |
csv.unregister_dialect |
注销 CSV 方言 |
csv.get_dialect |
返回具有给定名称的方言 |
csv.list_dialects |
返回所有已注册的方言 |
csv.field_size_limit |
返回解析器允许的当前最大字段大小 |
使用 Python csv
模块
import csv
要使用 Python CSV 模块,我们导入csv
。
Python CSV 读取器
csv.reader()
方法返回一个读取器对象,该对象遍历给定 CSV 文件中的行。
$ cat numbers.csv
16,6,4,12,81,6,71,6
numbers.csv
文件包含数字。
read_csv.py
#!/usr/bin/python3
import csv
f = open('numbers.csv', 'r')
with f:
reader = csv.reader(f)
for row in reader:
for e in row:
print(e)
在代码示例中,我们打开numbers.csv
进行读取并读取其内容。
reader = csv.reader(f)
我们得到reader
对象。
for row in reader:
for e in row:
print(e)
通过两个for
循环,我们遍历数据。
$ ./read_csv.py
16
6
4
12
81
6
71
6
这是示例的输出。
具有不同分隔符的 Python CSV 读取器
csv.reader()
方法允许使用带有delimiter
属性的不同定界符。
$ cat items.csv
pen|cup|bottle
chair|book|tablet
items.csv
包含用"|"
分隔的字符值。
read_csv.py
#!/usr/bin/python3
import csv
f = open('items.csv', 'r')
with f:
reader = csv.reader(f, delimiter="|")
for row in reader:
for e in row:
print(e)
该代码示例从使用'|'
定界符的 CSV 文件读取并显示数据。
$ ./read_csv2.py
pen
cup
bottle
chair
book
tablet
这是示例的输出。
Python CSV DictReader
csv.DictReader
类的操作类似于常规读取器,但会将读取的信息映射到字典中。 字典的键可以使用fieldnames
参数传入,也可以从 CSV 文件的第一行推断出来。
$ cat values.csv
min,avg,max
1, 5.5, 10
2, 3.5, 5
文件的第一行包含字典键。
read_csv_dictionary.py
#!/usr/bin/python3
# read_csv3.py
import csv
f = open('values.csv', 'r')
with f:
reader = csv.DictReader(f)
for row in reader:
print(row['min'], row['avg'], row['max'])
该示例使用csv.DictReader
从values.csv
文件中读取值。
for row in reader:
print(row['min'], row['avg'], row['max'] )
该行是 Python 字典,我们使用键引用数据。
Python CSV 编写器
csv.writer()
方法返回一个writer
对象,该对象将用户数据转换为给定文件状对象上的定界字符串。
write_csv.py
#!/usr/bin/python3
import csv
nms = [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12]]
f = open('numbers2.csv', 'w')
with f:
writer = csv.writer(f)
for row in nms:
writer.writerow(row)
该脚本将数字写入numbers2.csv
文件。 writerow()
方法将一行数据写入指定的文件。
$ cat numbers2.csv
1,2,3,4,5,6
7,8,9,10,11,12
一次写入所有数据是可能的。 writerows()
方法将所有给定的行写入 CSV 文件。
write_csv2.py
#!/usr/bin/python3
import csv
nms = [[1, 2, 3], [7, 8, 9], [10, 11, 12]]
f = open('numbers3.csv', 'w')
with f:
writer = csv.writer(f)
writer.writerows(nms)
该代码示例使用writerows()
方法将三行数字写入文件。
Python CSV DictWriter
csv.DictWriter
类的操作类似于常规编写器,但将 Python 字典映射到 CSV 行。 fieldnames
参数是一系列键,这些键标识传递给writerow()
方法的字典中的值写入 CSV 文件的顺序。
write_csv_dictionary.py
#!/usr/bin/python3
import csv
f = open('names.csv', 'w')
with f:
fnames = ['first_name', 'last_name']
writer = csv.DictWriter(f, fieldnames=fnames)
writer.writeheader()
writer.writerow({'first_name' : 'John', 'last_name': 'Smith'})
writer.writerow({'first_name' : 'Robert', 'last_name': 'Brown'})
writer.writerow({'first_name' : 'Julia', 'last_name': 'Griffin'})
该示例使用csv.DictWriter
将 Python 字典中的值写入 CSV 文件。
writer = csv.DictWriter(f, fieldnames=fnames)
创建了新的csv.DictWriter
。 标头名称将传递给fieldnames
参数。
writer.writeheader()
writeheader()
方法将标头写入 CSV 文件。
writer.writerow({'first_name' : 'John', 'last_name': 'Smith'})
Python 字典被写入 CSV 文件中的一行。
$ cat names.csv
first_name,last_name
John,Smith
Robert,Brown
Julia,Griffin
这是输出。
Python CSV 自定义方言
使用csv.register_dialect()
方法创建自定义方言。
custom_dialect.py
#!/usr/bin/python3
import csv
csv.register_dialect("hashes", delimiter="#")
f = open('items3.csv', 'w')
with f:
writer = csv.writer(f, dialect="hashes")
writer.writerow(("pens", 4))
writer.writerow(("plates", 2))
writer.writerow(("bottles", 4))
writer.writerow(("cups", 1))
该程序使用(# )字符作为分隔符。 使用csv.writer()
方法中的dialect
选项指定方言。
$ cat items3.csv
pens#4
plates#2
bottles#4
cups#1
这是输出。
在本教程中,我们使用 Python 处理 CSV。
您可能也会对以下相关教程感兴趣: Python 教程, Python 列表推导式, PrettyTable 教程, PyMongo 教程, Python SimpleJson 教程, OpenPyXL 教程, Python Requests 教程和 Python 列表推导。