Python基础学习笔记(9)

本文介绍了Python中处理CSV和JSON数据的基本方法。通过csv模块读取和写入CSV文件,使用Reader和Writer对象操作数据。对于JSON,讲解了json库的loads和dumps函数,用于将数据转换为Python字典或反之。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《Python编程快速上手》

处理CSV文件和JSON数据

CSV文件时简化的电子表格,保存为纯文本文件。

JSOn它以Javascript源代码的形式,将信息保存在纯文本文件中。

CSV文件时简单的,缺少Excel电子表格的许多功能。例如,CSV文件中:

  • 值没有类型,所有东西都是字符串
  • 没有字体大小或颜色的设置
  • 没有多个工作表
  • 不能指定单元格的宽度和高度
  • 不能合并单元格
  • 不能嵌入图片或图表

CSV的文件的优势时简单。

1.读取CSV文件

要用csv模块从CSV文件中读取数据,需要创建一个Reader对象。Reader对象让你迭代遍历CSV文件中的每一行。

import csv
exampleFile = open('example.csv')
exampleReader = csv.reader(exampleFile)
exampleData = list(exampleReader)

exampleData
>> [['4/5/2014 13:34', 'Apples', '73'],
 ['4/5/2014 3:41', 'Cherries', '85'],
 ['4/6/2014 12:46', 'Pears', '14'],
 ['4/8/2014 8:59', 'Oranges', '52'],
 ['4/10/2014 2:07', 'Apples', '152'],
 ['4/10/2014 18:10', 'Bananas', '23'],
 ['4/10/2014 2:40', 'Strawberries', '98']]

要访问Reader对象中的值,最直接的方法,就是将它转换成一个普通的Python列表,即将它传递给list()。

既然已经将CSV文件表示为列表的列表,就可以用表达式exampleData[row][col]来访问特定行和列的值。

exampleData[0][0]
>> '4/5/2014 13:34'
exampleData[0][1]
>> 'Apples'
exampleData[0][2]
>> '73'
exampleData[1][1]
>> 'Cherries'
exampleData[6][1]
>> 'Strawberries'

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

对于大型的CSV文件,你需要在一个for循环中使用Reader对象。这样避免将整个文件一次性装入内存。

import csv
exampleFile = open('example.csv')
exampleReader = csv.reader(exampleFile)

for row in exampleReader:
    print('Row #' + str(exampleReader.line_num) + ' ' + str(row))

>> Row #1 ['4/5/2014 13:34', 'Apples', '73']
Row #2 ['4/5/2014 3:41', 'Cherries', '85']
Row #3 ['4/6/2014 12:46', 'Pears', '14']
Row #4 ['4/8/2014 8:59', 'Oranges', '52']
Row #5 ['4/10/2014 2:07', 'Apples', '152']
Row #6 ['4/10/2014 18:10', 'Bananas', '23']
Row #7 ['4/10/2014 2:40', 'Strawberries', '98']

在导入csv模块,并从CSV文件得到Reader对象之后,可以循环遍历Reader对象中的行。每一行是一个值的列表,每个值表示一个单元格。

注意:Reader只能循环遍历一次。要再次读取CSV文件,必须调用csv.reader,创建一个对象。

2.写入CSV文件

Writer对象让你将数据写入CSV文件。要创建一个Writer对象,就使用csv.write()函数。

import csv
outputFile = open('output.csv','w',newline='')
outputWriter = csv.writer(outputFile)

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

outputFile.close()

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

delimiter和lineterminator关键字参数

如果你希望设置分隔单元格的样式和对行距进行设置,可以使用delimiter和lineterminator关键字参数。例如delimiter=’\t’就是使用制表符代替逗号来分隔单元格,lineterminator=’\n\n’就是设置两倍行距。

import csv
outputFile = open('output1.csv','w',newline='')
outputWriter = csv.writer(outputFile,delimiter='\t',lineterminator='\n\n')

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

outputFile.close()

3.JSON数据处理

json.loads()读取JSON数据和json.dumps()写出JSON数据。

JSON不能存储每一种Python值,它只能包含以下数据类型的值:字符串、整型、浮点型、布尔型、列表、字典和NoneType。JSON不能代表Python特有的对象,如File对象、CSV Reader或Writer对象、Regex对象或Selenium WebElement对象。

用load()函数读取JSON

要将包含JSON数据的字符串转换为Python的值。

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

import json
jsonDataAsPythonValue = json.loads(stringOfJsonData)
jsonDataAsPythonValue
>> {'felineIQ': None, 'isCat': True, 'miceCaught': 0, 'name': 'Zophie'}

请注意,JSON字符串总是用双引号。它将该数据返回一个Python字典。

用dumps()函数写出JSON

将一个Python值转换成JSON格式的数据字符串。该值只能时以下基本Python数据类型之一:字典、列表、整型、浮点型、字符串、布尔型或None。

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

import json
stringOfJsonData = json.dumps(pythonValue)
stringOfJsonData
>> '{"felineIQ": null, "isCat": true, "miceCaught": 0, "name": "Zophie"}'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值