一、 字典与xml相互转换
在转换前,需要先安装一下依赖:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple bs4
1. 字典转换为xml:
def trans_dict_to_xml(data_dict):
data_xml = []
for k in sorted(data_dict.keys()): # 遍历字典排序后的key
v = data_dict.get(k) # 取出字典中key对应的value
if k == 'detail' and not v.startswith('<![CDATA['): # 添加XML标记
v = '<![CDATA[{}]]>'.format(v)
data_xml.append('<{key}>{value}</{key}>'.format(key=k, value=v))
return '<xml version="1.0" encoding="UTF-8" >{}</xml>'.format(''.join(data_xml)) # 返回XML
2. Xml转换为字典:
# 定义XML转字典的函数
def trans_xml_to_dict(data_xml):
soup = BeautifulSoup(data_xml, features='xml')
xml = soup.find('xml') # 解析XML
if not xml:
return {}
data_dict = dict([(item.name, item.text) for item in xml.find_all()])
return data_dict
二、字典与元组相互转换
适用条件: 当只有偶数层数且内元组的个数为2个时元组才可进行转换为字典。
1. 元组转换为字典 tuple-> dict
可以直接通过dict()函数进行转换
EDUCATION_CHOICE = (
(0, '初中'),
(1, '高中'),
(2, '大专'),
(3, '本科'),
(4, '硕士'),
(5, '博士'),
)
print(dict(EDUCATION_CHOICE))
打印结果:
{0: '初中', 1: '高中', 2: '大专', 3: '本科', 4: '硕士', 5: '博士'}
2. 字典转换为元组 dict-> tuple
如果直接使用tuple()函数,转换成的元组将会是由key组成的元组。
dict_1 = {0: '初中', 1: '高中', 2: '大专', 3: '本科', 4: '硕士', 5: '博士'}
print(tuple(dict_1))
打印结果为:
(0, 1, 2, 3, 4, 5)
可以发现如果直接tuple()函数并不能达到想要的效果,我们可以通过列表转换为元组的方式,将字典的key和value先装到列表里,然后再使用tuple()函数,即可完成转换:
dict_1 = {0: '初中', 1: '高中', 2: '大专', 3: '本科', 4: '硕士', 5: '博士'}
print(tuple(dict_1))
data1 = []
for i in dict_1:
data1.append((i, dict_1[i]))
print(data1)
print(tuple(data1))
打印结果为:
(0, 1, 2, 3, 4, 5)
[(0, '初中'), (1, '高中'), (2, '大专'), (3, '本科'), (4, '硕士'), (5, '博士')]
((0, '初中'), (1, '高中'), (2, '大专'), (3, '本科'), (4, '硕士'), (5, '博士'))
总结:
1. 符合字典结构的元组可以直接通过dict()函数转换为字典。
2. 字典转换元组时,先需要通过遍历成列表,然后直接通过tuple()函数转换为元组。 |