为什么我的 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=°C>200</parameter>
有人能帮忙理解一下吗?
根据 documentation,etree.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="°C">30</parameter>'
In [15]: etree.tostring(root, encoding="unicode")
Out[15]: '<parameter name="Temperature" Units="°C">30</parameter>'
我正在使用 Etree 解析器编辑基于 xml 的配置文件。我能够阅读、查找和编辑我想要更改的文本。但是当我将整个数据写入一个新文件时,“°C”被写成"°C"
。我希望它保持原样,即“°C”。有人可以解释为什么解析器会这样替换它吗?
示例:
原行:<parameter name="Temperature" Units=°C>30</parameter>
(运行 python 脚本,找到“30”并将其设置为“200”。再次将行写入新文件)
编辑行:<parameter name="Temperature" Units=°C>200</parameter>
有人能帮忙理解一下吗?
根据 documentation,etree.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="°C">30</parameter>'
In [15]: etree.tostring(root, encoding="unicode")
Out[15]: '<parameter name="Temperature" Units="°C">30</parameter>'