《Python 编程快速上手 — 让繁琐工作自动化》读书笔记之【第14章 处理CSV文件和JSON数据】

CSV 表示“Comma-Separated Values(逗号分隔的值)”,CSV文件是简化的电子表格,保存为纯文本文件。JSON是一种数据格式,它以 JavaScript 源代码的形式,将信息保存在纯文本文件中。

1.  csv 模块

CSV 文件中的每行代表电子表格中的一行,逗号分割了该行中的单元格。

1)  Reader 对象

csv模块为Python标准库模块。要读取一个CSV文件,主要有一下几个步骤:

a)     使用open()函数打开一个CSV文件。

b)     使用csv模块的reader()函数创建一个Reader对象。

c)     使用列表的list()函数将Reader对象转换为列表。

d)     然后使用列表的方式去访问其值。

示例:

>>> import csv

>>> exampleFile =open('example.csv')

>>> exampleReader =csv.reader(exampleFile)

>>> exampleData =list(exampleReader)

>>> exampleData

[['4/5/2015 13:34', 'Apples', '73'],['4/5/2015 3:41', 'Cherries', '85'],

['4/6/2015 12:46', 'Pears', '14'],['4/8/2015 8:59', 'Oranges', '52'],

['4/10/2015 2:07', 'Apples', '152'],['4/10/2015 18:10', 'Bananas', '23'],

['4/10/2015 2:40', 'Strawberries', '98']]

2)  在 for 循环中,从 Reader 对象读取数据

对于大型的CSV文件,需要使用for循环去读取Reader对象。可以使用 Reader对象的 line_num 属性获取当前行的编号。Reader 对象只能循环遍历一次。要再次读取 CSV 文件,必须调用 csv.reader,创建一个对象。示例:

#   使用for循环从Reader对象中读取数据
import csv
exampleFile = open('example.csv')
exampleReader = csv.reader(exampleFile)
for row in exampleReader:
    print("第 " +  str(exampleReader.line_num) + '行: ' + str(row))

输出结果:

3)  Writer 对象

要把数据写入CSV文件,需要创建Writer对象。写入文件的流程如下:

a)     使用open()函数,以’w’模式打开一个文件,并且传递关键字参数newline=''。

b)     使用csv模块的writer()函数创建一个Writer对象。

c)     使用Writer对象的writerow()函数添加数据。传入的参数为列表形式。

d)     使用close()方法关闭文件。

示例:

>>> import csv

>>> outputFile =open('output.csv','w',newline = '')

>>> outputWriter =csv.writer(outputFile)

>>>outputWriter.writerow(['spam','eggs','bacon','ham'])

21

>>> outputFile.close()

如果忘记设置 newline 关键字参数,output.csv中的行距将有两倍。

4)  delimiter 和 lineterminator 关键字参数

delimiter:分隔符;分隔符是一行中单元格之间出现的字符。默认情况下,CSV 文件的分隔符是逗号

lineterminator:行中止符。行终止字符是出现在行末的字符。默认情况下,行终止字符是换行符。可以利用 csv.writer()的 delimiter 和 lineterminator关键字参数,将这些字符改成不同的值。示例:

>>>import csv

>>>csvFile = open('example.tsv', 'w', newline='')

>>>csvWriter = csv.writer(csvFile, delimiter='\t', lineterminator='\n\n')

>>>csvWriter.writerow(['apples', 'oranges', 'grapes'])

24

>>>csvWriter.writerow(['eggs', 'bacon', 'ham'])

17

>>>csvWriter.writerow(['spam', 'spam', 'spam', 'spam', 'spam', 'spam'])

32

>>>csvFile.close()

2.  json 模块

JSON只能存储以下类型数据:整型,浮点型,字符串,布尔型,列表,字典和NoneType。不能表示Python特有的对象。

1)  用 loads()函数读取 JSON

使用json模块的loads()函数(这个名字的意思是“loadstring”,而不 是“loads”)可以将JSON 数据的字符串转换为Python 的值。示例:

>>> stringOfJsonData ='{"name": "Zophie", "isCat": true,"miceCaught": 0,

"felineIQ": null}'

>>> import json

>>> jsonDataAsPythonValue =json.loads(stringOfJsonData)

>>> jsonDataAsPythonValue

{'isCat': True, 'miceCaught': 0, 'name':'Zophie', 'felineIQ': None}

请注意,JSON 字符串总是用双引号。它将该数据返回为一个 Python 字典。Python 字典是没有顺序的,所以如果打印 jsonDataAsPythonValue,键-值对可能以不同的顺序出现。

2)  用 dumps 函数写出 JSON

json.dumps()函数(它表示“dump string”,而不是 “dumps”)将一个 Python 值转换成 JSON 格式的数据字符串。示例:

>>>pythonValue = {'isCat': True, 'miceCaught': 0, 'name': 'Zophie',

'felineIQ':None}

>>>import json

>>>stringOfJsonData = json.dumps(pythonValue)

>>>stringOfJsonData

'{"isCat":true, "felineIQ": null, "miceCaught": 0, "name":"Zophie" }'


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值