Python 3(12)JSON/XML 解析

Python3 入门专栏

http://blog.csdn.net/column/details/19679.html


Python 处理 JSON 


python 提供了 json 模块用于处理 JSON 数据的编码解码,包含了以下2个函数:
  • json.dumps():对 json 数据进行编码;
  • json.loads():对 json 数据进行解码;
在 json 数据编码解码的过程中,python 原始类型和 json 类型会进行相互转换,它们的转换规则如下:
Python 原始类型JSON 类型
dictobject
strarray
int,floatnumber
True,Falsetrue,false
Nonenull

1)将 python 对象编码为 json 字符串

 
import json
# python dict 对象
user = {
    "name": "assad",
    "age": 20,
    "city": ["Guanzhou", "Chaozhou"]
}
# 将 python 对象编码为 json 字符串
json_str = json.dumps(user)
print(json_str)                 # 输出:{"name": "assad", "age": 20, "city": ["Guanzhou", "Chaozhou"]}
# 将 python 对象编码为 json 字符串,并写入文件中
with open("user_data.json", "w", encoding="utf-8") as output:
    json.dump(user, output)
    

2)将 json 字符串解码为 python 对象

 
import json
# 将 json 字符串其解码为 python 对象
json_str = '{"name": "assad", "age": 20, "city": ["Guanzhou", "Chaozhou"]}'
user = json.loads(json_str)
print(user['name'])           # 输出 :assad
# 从文件读取 json 字符串个,并将其解码为 python 对象
with open("user_data.json", "r", encoding="utf-8") as inputfile:
    global user
    user = json.load(inputfile)
print(user)




Python 解析 XML


python 在内置的 xml 模块中提供了以 dom 方式解析 XML 文本的支持

示例需要读取的xml文件如下,data.xml
 
<userlist>
    <user id="00012">
        <name>assad</name>
        <age>20</age>
        <city>Guanzhou</city>
    </user>
    <user id="00045">
        <name>Vecoty</name>
        <age>21</age>
        <city>Shanghai</city>
    </user>
    <user id="00152">
        <name>Bee</name>
        <age>34</age>
        <city>Beijing</city>
    </user>
</userlist>

DOM 方式解析 XML

 
import xml.dom.minidom
# 使用 minidom 解析器打开 XML 文档
dom_tree = xml.dom.minidom.parse("data.xml")
# 获取根节点
userlist = dom_tree.documentElement
# 获取根节点下的所有<user>节点
users = userlist.getElementsByTagName("user")
# 打印所有<user>节点信息
for user in users:
    print("-user info-")
    if user.hasAttribute("id"):
        print("id:", user.getAttribute("id"))    # 获取节点指定属性
    name = user.getElementsByTagName("name")[0]
    print("name:", name.childNodes[0].data)    # 获取节点值
    age = user.getElementsByTagName("age")[0]
    print("age:", age.childNodes[0].data)
    city = user.getElementsByTagName("city")[0]
    print("city:", city.childNodes[0].data)
    print()
# 输出:
# -user info-
# id: 00045
# name: Vecoty
# age: 21
# city: Shanghai
# 
# -user info-
# id: 00152
# name: Bee
# age: 34
# city: Beijing
# 
# -user info-
# id: 04502
# name: Lolo
# age: 16
# city: Shenzheng


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值