本文为原创文章,未经本人允许,禁止转载。转载请注明出处。
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)
上文中的china
、city
均为标记名称,即标签(tag)。以<
开头,以>
结尾,名字对大小写敏感。标签可分为三类:
- start-tag,如
<china>
- end-tag,如
</china>
- 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
import xml
,tree=xml.etree.ElementTree.parse('china.xml')
from xml import etree
,tree=etree.ElementTree.parse('china.cml')
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'))
输出为(部分):