跳转至

Python CSV 教程-读写 CSV

原文: http://zetcode.com/python/csv/

Python CSV 教程显示了如何使用 Python csv 模块读取和写入 CSV 数据。

CSV

CSV(逗号分隔值)是在电子表格和数据库中使用的非常流行的导入和导出数据格式。 CSV 文件中的每一行都是一个数据记录。 每个记录由一个或多个字段组成,用逗号分隔。 CSV 是一种非常简单的数据格式,但是可以有很多差异,例如不同的定界符,换行或引号字符。

Python CSV 模块

csv模块实现用于以 CSV 格式读取和写入表格数据的类。 csv模块的readerwriter对象读取和写入序列。 程序员还可以使用DictReaderDictWriter类以字典形式读取和写入数据。

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.DictReadervalues.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 列表推导



回到顶部