0

如果使用 lxml 读取并输出以下字符串,则元音变音将转换为实体。

import xml.etree.ElementTree as ET

root = ET.fromstring("<r><s>Die Häuser haben Dächer.</s></r>")
as_text = ET.tostring(root).decode("utf-8")
print(as_text)

输出:

<r><s>Die H&#228;user haben D&#228;cher.</s></r>

预期输出:

<r><s>Die Häuser haben Dächer.</s></r>

变音符号只是一个例子。我通常想禁用实体转换,而是保留原始输入符号。

我可以禁用实体转换吗?有没有一种安全的方法来重新转换实体?

4

1 回答 1

1

ElementTree 和 lxml 中使用的默认编码tostring()是 ASCII。

要获得预期的输出,您可以使用encoding="unicode"

as_text = ET.tostring(root, encoding="unicode")
print(as_text)

参考:

于 2021-02-10T15:19:08.377 回答