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.csv16,6,4,12,81,6,71,6
numbers.csv文件包含数字。
read_csv.py
#!/usr/bin/python3import csvf = 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.py166412816716
这是示例的输出。
具有不同分隔符的 Python CSV 读取器
csv.reader()方法允许使用带有delimiter属性的不同定界符。
$ cat items.csvpen|cup|bottlechair|book|tablet
items.csv包含用"|"分隔的字符值。
read_csv.py
#!/usr/bin/python3import csvf = open('items.csv', 'r')with f:reader = csv.reader(f, delimiter="|")for row in reader:for e in row:print(e)
该代码示例从使用'|'定界符的 CSV 文件读取并显示数据。
$ ./read_csv2.pypencupbottlechairbooktablet
这是示例的输出。
Python CSV DictReader
csv.DictReader类的操作类似于常规读取器,但会将读取的信息映射到字典中。 字典的键可以使用fieldnames参数传入,也可以从 CSV 文件的第一行推断出来。
$ cat values.csvmin,avg,max1, 5.5, 102, 3.5, 5
文件的第一行包含字典键。
read_csv_dictionary.py
#!/usr/bin/python3# read_csv3.pyimport csvf = 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/python3import csvnms = [[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.csv1,2,3,4,5,67,8,9,10,11,12
一次写入所有数据是可能的。 writerows()方法将所有给定的行写入 CSV 文件。
write_csv2.py
#!/usr/bin/python3import csvnms = [[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/python3import csvf = 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.csvfirst_name,last_nameJohn,SmithRobert,BrownJulia,Griffin
这是输出。
Python CSV 自定义方言
使用csv.register_dialect()方法创建自定义方言。
custom_dialect.py
#!/usr/bin/python3import csvcsv.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.csvpens#4plates#2bottles#4cups#1
这是输出。
在本教程中,我们使用 Python 处理 CSV。
您可能也会对以下相关教程感兴趣: Python 教程, Python 列表推导式, PrettyTable 教程, PyMongo 教程, Python SimpleJson 教程, OpenPyXL 教程, Python Requests 教程和 Python 列表推导。
