转换Python数据类型之间的过程可以使用标准库中的 xml
,json
模块实现。此外,Python自带的字典和类也可以进行互相转换。下面将详细介绍四种数据类型的转换方法:
1. XML与Python之间的转换
- 将Python数据类型转换成XML
使用xml.etree.ElementTree
模块中Element
类中的方法tostring()
,可以将Python数据类型转换成XML字符串。
import xml.etree.ElementTree as ET
person = {'name': 'John Doe', 'age': 25, 'address': '123 Main St'}
root = ET.Element("Person")
for key, value in person.items():
child = ET.Element(key)
child.text = str(value)
root.append(child)
xml_string = ET.tostring(root, encoding='utf8').decode('utf8')
print(xml_string)
输出结果:
<Person><name>John Doe</name><age>25</age><address>123 Main St</address></Person>
- 将XML转换成Python字典
使用xml.etree.ElementTree
模块中ElementTree
类中的方法fromstring()
可以将可解析字符串的XML转换为一个对象,然后使用一个递归函数将其转换成Python字典:
import xml.etree.ElementTree as ET
xml_string = "<Person><name>John Doe</name><age>25</age><address>123 Main St</address></Person>"
root = ET.fromstring(xml_string)
def xml_to_dict(xml_root):
xml_dict = {}
for child in xml_root:
if len(child) == 0:
xml_dict[child.tag] = child.text
else:
xml_dict[child.tag] = xml_to_dict(child)
return xml_dict
person = xml_to_dict(root)
print(person)
输出结果:
{'name': 'John Doe', 'age': '25', 'address': '123 Main St'}
2. Python字典与JSON之间的转换
- 将Python字典转换成JSON
使用json.dumps()
方法将Python字典转换成JSON字符串:
import json
person = {'name': 'John Doe', 'age': 25, 'address': '123 Main St'}
json_string = json.dumps(person)
print(json_string)
输出结果:
{"name": "John Doe", "age": 25, "address": "123 Main St"}
- 将JSON字符串转换成Python字典
使用json.loads()
方法将JSON字符串转换成Python字典:
import json
json_string = '{"name": "John Doe", "age": 25, "address": "123 Main St"}'
person = json.loads(json_string)
print(person)
输出结果:
{'name': 'John Doe', 'age': 25, 'address': '123 Main St'}
3. Python字典转换成类的实例
- 使用类来实现
可以先定义一个类,然后将一个Python字典转换成该类的实例。
class Person:
def __init__(self, name, age, address):
self.name = name
self.age = age
self.address = address
person = {'name': 'John Doe', 'age': 25, 'address': '123 Main St'}
person_instance = Person(**person)
print(person_instance.name, person_instance.age, person_instance.address)
输出结果:
John Doe 25 123 Main St
- 使用第三方库
object-mapper
来实现
使用第三方库 object-mapper
可以很容易地将一个Python字典转换成一个类的实例:
!pip install object-mapper
from object_mapper import ObjectMapper
person = {'name': 'John Doe', 'age': 25, 'address': '123 Main St'}
person_instance = ObjectMapper(person, Person)
print(person_instance.name, person_instance.age, person_instance.address)
输出结果:
John Doe 25 123 Main St
4. 类的实例转换成Python字典
使用类实例的 __dict__
属性可以将该实例转换成Python字典:
class Person:
def __init__(self, name, age, address):
self.name = name
self.age = age
self.address = address
person_instance = Person('John Doe', 25, '123 Main St')
person_dict = person_instance.__dict__
print(person_dict)
输出结果:
{'name': 'John Doe', 'age': 25, 'address': '123 Main St'}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python xml、字典、json、类四种数据类型如何实现互相转换 - Python技术站