python处理json文件
1. python爬虫(七)数据处理方法之JSON
JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation),是轻量级的文本数据交换格式,且具有自我描述性,更易理解。
JSON看起来像python类型(列表,字典)的字符串。
在之前的文章中,我们说到了怎么用response的方法,获取到网页正确解码后的字符串。如果还有不懂的,可以先阅读 Python爬虫(三)Requests库 。接下来以有道翻译为例子,说说怎么通过网页解码后的字符串,提取到翻译结果。
再结合上述有道翻译的例子,得到字典类型的返回结果,并提取出来翻译结果。
将上述例子的dict_json换成str字符串,再写入文本中。
执行完上述的程序,会得到一个fanyi.txt的文件,其结果如下:{"type": "ZH_CN2EN", "errorCode": 0, "elapsedTime": 1, "translateResult": [[{"src": "\u4eba\u751f\u82e6\u77ed\uff0c\u6211\u7528python", "tgt": "Life is too short, I use python"}]]}。这样子的一份文档,中文部分显示的是二进制,且格式非常不利于阅读,这并不是我们想要的结果。好在json.mps()为我们提供的两个方法,以帮助我们更好阅读文档。
1.ensure_ascii,能够让中文显示成中文;
2.indent,能够让下一行在第一行的基础上空格。
其用法如下:
2. python3 读excel转Json文件
from xlrd import *
import json
# 参考1-字典、列表转JSON:https://www.cnblogs.com/longchang/p/10904850.html
# 参考2-JSON直接保存到文件:https://www.cnblogs.com/miyatest/p/9603897.html
# 从excel读取数据存放到列表中
def readExcel():
keyData=[] # 定义空List,用于保存读到的行数据
excelBook=open_workbook("data.xlsx") # 从当前目录读取《data.xlsx》文件
table=excelBook.sheet_by_name("data") # 从《data.xlsx》中找名为 data的sheet页
rowNum=table.nrows # 获取《data.xlsx》-->data页中 行数
colNum=table.ncols # 获取《data.xlsx》-->data页中 列数
colName=table.row_values(0) # 取第一行数据,即列名,colName 是个List
# print(colName)
if rowNum<=1:
print("没数据...") # 如果行数<=1,说明没有数据,因第1行一般定义为列名
else:
for i in range(rowNum-1):
d={} # 定义空字典,用于存放获取到数据
values=table.row_values(i+1) # 获取每行的数据,values最终是个List
# print(values)
for x in range(colNum): # 每个列作为字典的一组数据
d[colName[x]]=values[x] # 用colName值作为字典的key,values值作业为字典的value
# print(d)
keyData.append(d) # 读完一行数据保存到字典,再保存到列表
# print(keyData)
return keyData # 全部数据读完并保存到列表后,返回
# 列表转Json
def listToJson():
keyParam=readExcel() # 调用从excel读取数据的函数,把数据保存到列表
CaseConfig=open("CaseConfig.json", mode="w+") # 创建json文件
CaseConfig.write('{\n"key":') # 往json文件中写数据,先写json的格式的{,和模块名
# 把从excel读取的数据转成Json格式保存入 CaseConfig,indent=4是进行格式化,使json排版好看
json.mp(keyParam, CaseConfig, indent=4)
CaseConfig.write('\n}') # 往json文件中写数据,写结尾的 },写前先换行
CaseConfig.close() # 关闭json文件,必要!!
if __name__ == '__main__': # 调试调用
listToJson()
3. python中json处理
python中json文件处理涉及的四个函数json.loads()、json.mps()、json.load()、json.mp()。
1)json.mps()
将一个Python数据类型dict进行json格式的编码(字典->字符串)
eg:
age_dict = {'age1':'12', 'age2':'15'}
json_info = json.mps(age_dict)
print("json_info = {}".format(json_info))
print("json_info type = {}".format(type(json_info)))
2)json.loads()
将json格式数据转换为dict(字符串->字典)
json_age ='{"age1": "12", "age2": "15"}'
dict_age = json.loads(json_info)
print("json_age = {}".format(json_age))
print("dict_age type = {}".format(str(type(dict_age))))
3)json.load()
读取文件,将里json格式字符串转化为dict
with open(test.json, 'r') as file:
contents = json.load(file)
print(contents)
4)json.mp()
将dict类型转换为json格式字符串,存入文件
number = [1, 2, 3, 5]
file = 'number.json'
with open(file , 'w') as file:
json.mp(number, file)