PythonCSV教程展示了如何使用Pythoncsv模块读取和写入CSV数据。
CSV
CSV(逗号分隔值)是电子表格和数据库中使用的一种非常流行的导入和导出数据格式。CSV文件中的每一行都是一条数据记录。每条记录由一个或多个字段组成,以逗号分隔。虽然CSV是一种非常简单的数据格式,但可能存在许多差异,例如不同的分隔符、换行符或引号字符。
Pythoncsv模块
csv
模块实现类来读写CSV格式的表格数据。csv
模块的reader
和writer
对象读取和写入序列。程序员还可以使用DictReader
和DictWriter
类以字典形式读写数据。
PythonCSV方法
下表显示了Pythoncsv方法:
方法 | 描述 |
---|---|
csv.reader | 返回一个遍历CSV文件行的读取器对象 |
csv.writer | 返回一个将数据写入CSV文件的写入器对象 |
td> | |
csv.register_dialect | 注册一个CSV方言 |
csv.unregister_dialect | 注销CSV方言 |
csv.get_dialect | 返回具有给定名称的方言 |
csv.list_dialects | 返回所有已注册的方言 |
csv.field_size_limit | 返回解析器允许的当前最大字段大小 |
使用Pythoncsv模块
import csv
要使用PythonCSV模块,我们导入csv
。
PythonCSV阅读器
csv.reader
方法返回一个读取器对象,该对象遍历给定CSV文件中的行。
$ cat numbers.csv 16,6,4,12,81,6,71,6
numbers.csv
文件包含数字。
#!/usr/bin/python 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
具有不同分隔符的PythonCSV阅读器
csv.reader
方法允许使用不同的分隔符及其delimiter
属性。
$ cat items.csv pen|cup|bottle chair|book|tablet
items.csv
包含以“|”分隔的值性格。
#!/usr/bin/python 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
PythonCSV字典阅读器
csv.DictReader
类像普通阅读器一样运行,但将读取的信息映射到字典中。字典的键可以通过fieldnames
参数传入或从CSV文件的第一行推断。
$ cat values.csv min,avg,max 1, 5.5, 10 2, 3.5, 5
文件的第一行由字典键组成。
#!/usr/bin/python # 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字典,我们使用键引用数据。
PythonCSV编写器
csv.writer
方法返回一个writer对象,该对象将用户的数据转换为给定类文件对象上的分隔字符串。
#!/usr/bin/python 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文件。
#!/usr/bin/python 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
方法将三行数字写入文件。
PythonCSVDictWriter
csv.DictWriter
类的操作与常规编写器类似,但将Python词典映射到CSV行。fieldnames
参数是一个键序列,用于标识传递给writerow
方法的字典中的值写入CSV文件的顺序。
#!/usr/bin/python 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
PythonCSV自定义方言
使用csv.register_dialect
方法创建自定义方言。
#!/usr/bin/python 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教程。