为什么我的 XML 解析器在新创建的文件中将“°C”写为“°C”?

Why does my XML parser writes "°C" as "°C" in a newly created file?

我正在使用 Etree 解析器编辑基于 xml 的配置文件。我能够阅读、查找和编辑我想要更改的文本。但是当我将整个数据写入一个新文件时,“°C”被写成"°C"。我希望它保持原样,即“°C”。有人可以解释为什么解析器会这样替换它吗?

示例: 原行:<parameter name="Temperature" Units=°C>30</parameter>

(运行 python 脚本,找到“30”并将其设置为“200”。再次将行写入新文件)

编辑行:<parameter name="Temperature" Units=&#176;C>200</parameter>

有人能帮忙理解一下吗?

根据 documentationetree.tostring() 默认输出 ASCII 编码的字符串,其中 ° 符号只能表示为实体。要指定 unicode 输出,请使用 encoding 参数。


In [12]: string = '<parameter name="Temperature" Units="°C">30</parameter>'

In [13]: root = etree.fromstring(string)

In [14]: etree.tostring(root)
Out[14]: b'<parameter name="Temperature" Units="&#176;C">30</parameter>'

In [15]: etree.tostring(root, encoding="unicode")
Out[15]: '<parameter name="Temperature" Units="°C">30</parameter>'