开放的编程资料库

当前位置:我爱分享网 > Python教程 > 正文

Python CSV 教程 – 读写 CSV

PythonCSV教程展示了如何使用Pythoncsv模块读取和写入CSV数据。

CSV

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

Pythoncsv模块

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

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.DictReadervalues.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教程。

未经允许不得转载:我爱分享网 » Python CSV 教程 – 读写 CSV

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏