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 类型
dict object
str array
int,float number
True,False true,false
None null

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>assadname>
        <age>20age>
        <city>Guanzhoucity>
    user>
    <user id="00045">
        <name>Vecotyname>
        <age>21age>
        <city>Shanghaicity>
    user>
    <user id="00152">
        <name>Beename>
        <age>34age>
        <city>Beijingcity>
    user>
userlist>

DOM 方式解析 XML

 
import xml.dom.minidom
# 使用 minidom 解析器打开 XML 文档
dom_tree = xml.dom.minidom.parse("data.xml")
# 获取根节点
userlist = dom_tree.documentElement
# 获取根节点下的所有节点
users = userlist.getElementsByTagName("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


你可能感兴趣的:(Python,3,python,3,基本使用教程)