python - XML 换行符实体和 Python 编码
问题描述
我在 python 脚本中有以下代码行:
dep11 = ET.SubElement(dep1, "POVCode").text = "#declare lg_quality = LDXQual;
#if (lg_quality = 3)
#declare lg_quality = 4;
#end"
我的问题是关于

角色的。我想在 XML 输出中看到这个字符实体,但第一个 & 号不断被&
字符实体替换,这会创建无意义的字符实体

。
我将文件编码为utf-8
.
import xml.etree.ElementTree as ET
...
with open("LGEO.xml", "wb") as f:
tree.write(f, "utf-8")
我最终得到:
<POVCode>#declare lg_quality = LDXQual;&#x0A;#if (lg_quality = 3)&#x0A;#declare lg_quality = 4;&#x0A;#end</POVCode>
不知道我做错了什么。
[编辑]
我正在尝试实施@mzjn 指出的解决方案。
我有六行代码:
dep11 = ET.SubElement(dep1, "POVCode")
dep21 = ET.SubElement(dep2, "POVCode")
dep11.text = "#declare lg_quality = LDXQual;&
#if (lg_quality = 3)&
#declare lg_quality = 4;&
#end"
dep21.text = "#declare lg_studs = LDXStuds;&
"
ET.tostring(dep11).replace('&&', '&')
ET.tostring(dep21).replace('&&', '&')
write
我没有收到任何错误,但结果与我之前的树没有任何不同。
我又被卡住了。
解决方案
我最终做的是使用标准的 Pythonwrite
函数,而不是使用 ElementTree 自己的write
函数。
text = ET.tostring(root).replace("&&", "&")
with open("LGEO.xml", "wb") as f:
f.write(text.encode("utf-8"))
以上是 Python 代码的最后一步。我不知道将根对象转换为这样的字符串是否有缺点。它可能会更慢,但它对我有用。
推荐阅读
- amazon-web-services - 从 Jboss 到 AWS 云观察的参数化日志记录
- r - 如何在R中的同一图中绘制矩阵每一列的ACF
- python - Pandas 数据框围绕基础数据(不仅仅是它的显示方式)
- python - 将 Python 代码转换为 Matlab 脚本
- c++ - 比较 C++20 中的多态类型
- python - 使用或不使用枢轴来展平长数据帧的最佳方法
- python - 从nodejs运行python脚本时子进程退出代码1
- python - 列表作为 Python 类方法的输入
- android - 如何从一个片段过渡到另一个片段?
- json - JSONPath 使用过滤器发出返回值