Python面试必考重点之数据存储第二关——XML文档和字典的互转
Posted 孤寒者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python面试必考重点之数据存储第二关——XML文档和字典的互转相关的知识,希望对你有一定的参考价值。
面试题第二关:
第一部分——考点:
- 将字典转换为XML文档;
- 将XML文档转换为字典。
第二部分——面试题:
1.面试题一:如何将一个字典转换为XML文档,并将该XML文档保存为文本文件。
2.面试题二:如何读取XML文件的内容,并将其转换为字典。
第三部分——解析:
面试题一 之 如何将一个字典转换为XML文档,并将该XML文档保存为文本文件:
- 这里需要用到第三方库:dicttoxml。需要安装一下哦~
# coding=utf-8
# _author__ = 孤寒者
import dicttoxml
from xml.dom.minidom import parseString
d = [20, 'name', 'name':'xiaohong', 'age':30, 'salary':500,
'name':'honghong', 'age':34, 'salary':2050,
'name':'lihua', 'age':10, 'salary':1200,
]
bxml = dicttoxml.dicttoxml(d, custom_root='persons') # 注意:此时返回值是二进制类型,所以需要解码哦~
xml = bxml.decode('utf-8')
print(xml)
print("---"*25)
# 美观格式
dom = parseString(xml)
prettyxml = dom.toprettyxml(indent=' ')
print(prettyxml)
# 保存
with open('persons1.xml', 'w', encoding='utf-8') as f:
f.write(prettyxml)
面试题二 之 如何读取XML文件的内容,并将其转换为字典:
-
这里需要用到第三方库:xmltodict。需要安装一下哦~
-
供我们读取的XML文件是products.xml,文件内容如下:
<!-- products.xml -->
<root>
<products>
<product uuid='1234'>
<id>10000</id>
<name>苹果</name>
<price>99999</price>
</product>
<product uuid='1235'>
<id>10001</id>
<name>小米</name>
<price>999</price>
</product>
<product uuid='1236'>
<id>10002</id>
<name>华为</name>
<price>9999</price>
</product>
</products>
</root>
# coding=utf-8
# _author__ = 孤寒者
import xmltodict
with open('products.xml', 'rt', encoding='utf-8') as f:
xml = f.read()
d = xmltodict.parse(xml)
print(d)
print("---" * 25)
print(type(d)) # 输出为:<class 'collections.OrderedDict'>
# 说明此时已经转为字典(排序字典)~
print("---"*25)
# 美观格式
import pprint
dd = pprint.PrettyPrinter(indent=4)
dd.pprint(d)
第四部分——总结:
需要两个第三方模块(需安装):
- dicttoxml用于将字典转换为XML文档;
- xmltodict用于将XML文档转换为字典。
以上是关于Python面试必考重点之数据存储第二关——XML文档和字典的互转的主要内容,如果未能解决你的问题,请参考以下文章
Python面试必考重点之列表,元组和字典第二关——如何向集合中添加和删除元素,需要注意什么/如何求集合的并,交,集合之间是否还支持其他操作
Python面试必考重点之字符串与正则表达式第十二关——findall函数的使用
Python面试必考重点之数据存储第一关——读取XML节点和属性值的方法
Python面试必考重点之列表,元组和字典第十二关——如果列表元素是字典序列,如何利用lambda表达式对列表进行升序降序排列