lxml - 保留输入符号,禁用实体转换
lxml - keep input symbols, disable entity conversion
如果使用 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äuser haben Dächer.</s></r>
预期输出:
<r><s>Die Häuser haben Dächer.</s></r>
变音符号只是一个例子。我通常想禁用实体转换,而是保留原始输入符号。
我可以禁用实体转换吗?
是否有安全的方法来重新转换实体?
tostring()
使用的默认编码在 ElementTree 和 lxml 中都是 ASCII。
要获得预期的输出,您可以使用 encoding="unicode"
:
as_text = ET.tostring(root, encoding="unicode")
print(as_text)
参考文献:
如果使用 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äuser haben Dächer.</s></r>
预期输出:
<r><s>Die Häuser haben Dächer.</s></r>
变音符号只是一个例子。我通常想禁用实体转换,而是保留原始输入符号。
我可以禁用实体转换吗? 是否有安全的方法来重新转换实体?
tostring()
使用的默认编码在 ElementTree 和 lxml 中都是 ASCII。
要获得预期的输出,您可以使用 encoding="unicode"
:
as_text = ET.tostring(root, encoding="unicode")
print(as_text)
参考文献: