【Python基础】第七课:处理JSON、XML格式的数据

JSON,XML

Posted by x-jeff on August 31, 2019

本文为原创文章,未经本人允许,禁止转载。转载请注明出处。

1.处理JSON格式数据

👉方法一:

采用open的方式:

1
2
3
with open ('jd.json','r') as f: 
    jd=f.read()
print(jd)

结果见下:

❗️其中,jd字符串格式(因为.read()返回的即为字符串格式):

将输出结果转换成字典格式

1
2
3
import json
dic=json.loads(jd)
print(dic)

其中,json.loads()中必须放入字符串格式的数据。上述代码输出见下:

将字典格式的json数据恢复成字符串类型:

1
2
jd2=json.dumps(dic)
print(jd2)

结果和jd比对如下:

少了换行符。

补充知识:

创建一个空的列表li=[]。此时如果向空列表内直接写值li[0]=0会报错,向空的列表内写入内容需要li.append(0),这时li=[0]

👉方法二:

使用pandas读入,类似于读csv和excel数据

1
2
3
import pandas
df=pandas.read_json('jd.json')
print(df)

输出为DataFrame格式:

2.处理XML格式数据

http://flash.weather.com.cn/wmaps/xml/china.xml处下载中国气象网的xml数据,部分内容见下:

2.1.XML数据格式

xml文档的字符分为标记内容两类。标记通常以<开头,以>结尾,不是标记的字符就是内容:

<标记名称 属性名1=属性值1 属性名2=属性值2 ...>内容</标记名称>

2.1.1.标签(tag)

上文中的chinacity均为标记名称,即标签(tag)。以<开头,以>结尾,名字对大小写敏感。标签可分为三类:

  1. start-tag,如<china>
  2. end-tag,如</china>
  3. empty-element tag,如<city .... />

2.1.2.元素(element)

元素是文档逻辑组成,或者在start-tag与匹配的end-tag之间,或者仅作为一个empty-element tag。例如:<greeting>Hello, world!</greeting><line-break />

2.1.3.属性(attribute)

属性是一种标记结构,在start-tag或empty-element tag内部的“名字-值对”。例如,<img src="madonna.jpg" alt="Madonna" />。每个元素中,一个属性最多出现一次,一个属性只能有一个值。

2.2.处理xml数据

1
2
3
import xml.etree.ElementTree as ET
tree=ET.parse('china.xml')
root=tree.getroot()

关于import

  1. import xml,tree=xml.etree.ElementTree.parse('china.xml')
  2. from xml import etree,tree=etree.ElementTree.parse('china.cml')
  3. from xml.etree import ElementTree,tree=ElementTree.parse('china.xml')

2.2.1.解析xml文件

使用xml.etree.ElementTree解析xml文件。

ET.parse()将xml文件解析成ElementTree格式文件(一个树形结构),tree的结构见下:

2.2.2.获取根节点

root=tree.getroot()可获取树的根节点:

  • root.tag:获取节点名称。即:china。
  • root.attrib:获取节点对应的属性(❗️返回数据为字典格式)。即:{‘dn’: ‘day’}。
1
2
for xx in root :
	print(xx.tag,xx.attrib)

xx依次为该根节点内的每个元素。上述代码输出为(部分):

也可以使用.iter()递归查询指定的子元素:

1
2
for city in root.iter('city')		
	print(city.get('cityname'),city.get('tem1'))

输出为(部分):

3.代码地址

  1. 处理JSON、XML格式的数据

4.参考资料

  1. XML(维基百科)