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>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