在我的代码中,我修改了一些XML并将这些XML写入输出文件。但不幸的是,xml.etree将一些特殊字符转换为HTML字符,如下所示。有什么办法可以避免这种情况吗?如果无法使用xml.etree,我将向其他Python库开放。
import xml.etree.ElementTree as ET
xml = ET.fromstring("<Item a='ë'/>")
print(ET.tostring(xml))
# b'<Item a="ë" />'发布于 2020-07-14 09:42:52
ElementTree默认为US编码.在US中没有表示ë的方法,因此它返回到将字符表示为一个实体ë。
解决办法很简单:
print(ET.tostring(xml, encoding='unicode'))
# => '<Item a="ë" />'Note --这将给您一个str,而不是bytes,但是省略encoding参数会给您带来字节,就像您在自己的示例中看到的那样。
要将XML写入文件或通过网络发送,您需要将其转换为字节。使用Unicode编码,如UTF-8:
print(ET.tostring(xml, encoding='utf-8'))
# => b'<Item a="\xc3\xab" />'https://stackoverflow.com/questions/62892027
复制相似问题