IT Xiao Ang Zai 9月30号
版本:python3.7
编程软件:sublime
一:python解析json数据
1.什么是json:
(1)JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
JSON在python中分别由list和dict组成。
(2)作用:主要用于字符串和python数据类型间进行转换。
(3)Json模块提供了四个功能:dumps、dump、loads、load
json dumps把数据类型转换成字符串 dump把数据类型转换成字符串并存储在文件中 loads把字符串转换成数据类型 load把文件打开从字符串转换成数据类型。
(4)优点:是可以在不同语言之间交换数据的。
缺点:json只能序列化最基本的数据类型。
2.python对json数据的基本操作:
python的json模块提供了一种简单的方式来编码和解码JSON数据。其中两个主要的函数是json.dumps()和json.loads()。json.dumps()函数是将一个python数据结构转换为JSON编码的字符串,json.loads()函数是将一个JSON编码的字符串转换回一个python数据结构。但如果你要处理的是文件,你可以使用 json.dump() 和 json.load() 来编码和解码JSON数据:
import json
data = {'name':'IT Xiao Ang Zai','number':100,'age':19.5}
jsonStr = json.dumps(data) #python数据结构(一般为字典)转换为JSON编码的字符串
print(jsonStr)
print(type(json))
data2 = json.loads(jsonStr) #将一个JSON编码的字符串转换回一个python数据结构
print(data2)
print(type(data2))
#我们现在试着写入json类型数据
with open("my_data.json",'w') as f:
json.dump(data2,f)
#我们现在进行读入json类型数据
with open("my_data.json",'r') as g:
result_data = json.load(g)
print(result_data)
结果如下:
我们发现,当转换为一个json字符串的时候,它的类型为module,其实是一个字符串。而且我们要对文件进行操作的话,需要用到不加s的两个函数进行编码和解码json数据的操作。
其实只要把返回的json格式嵌套弄清楚,json还是比较简单的,其实之前网络爬虫中就介绍过json解析数据了。
3.注意事项
在读取文件时,要设置以utf-8解码模式读取文件,encoding参数必须设置,否则默认以gbk模式读取文件,当文件中包含中文时,会报错:
会出现错误:UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 32: illegal multibyte sequence
此时需要设置encoding参数,以utf-8编码模式读取文件:
import json
with open("E:\\result.json","r",encoding="utf-8") as f:
data = json.load(f)
print(data)
我们可以看到结果:
现在就读取正常了。
二:pandas模块读取excel文件
1.pandx简介:pandas是基于NumPy的为了解决数据分析任务而创建的工具。pandas模块提供了高效地操作大型数据集所需的工具,对于大批量的数据分析是很方便的。
2.读取excel文件
(1) 读取文件通过read_excel函数实现,除了pandas还需要安装第三方库xlrd。
read_excel(io, sheetname=0, header=0, skiprows=None, skip_footer=0, index_col=None, names=None, parse_cols=None, parse_dates=False, date_parser=None, na_values=None, thousands=None, convert_float=True, has_index_names=None, converters=None, dtype=None, true_values=None, false_values=None, engine=None, squeeze=False, **kwds)
(2) 主要参数
io:excel文件,可以是文件路径、文件网址、file-like对象、xlrd workbook
sheetname:返回指定的sheet,参数可以是字符串(sheet名)、整型(sheet索引)、list(元素为字符串和整型,返回字典{'key':'sheet'})、none(返回字典,全部sheet)
header:指定数据表的表头,参数可以是int、list of ints,即为索引行数为表头; names:返回指定name的列,参数为array-like对象。
encoding:关键字参数,指定以何种编码读取
注:该函数返回pandas中的DataFrame或dict of DataFrame对象,利用DataFrame的相关操作即可读取相应的数据。
3.写入文件
(1) 写入文件通过pandas构造DataFrame,调用to_excel方法实现。
DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None)
(2) 主要参数
excel_writer:写入的目标excel文件,可以是文件路径、ExcelWriter对象
sheet_name:被写入的sheet名称,string类型,默认为'sheet1'; na_rep:缺失值表示,string类型
header:是否写表头信息,布尔或list of string类型,默认为True
index:是否写行号,布尔类型,默认为True
encoding:指定写入编码,string类型
在下一篇文章中会向大家介绍一些实际操作,请大家及时关注,欢迎评论与交流。