【发布时间】:2020-05-20 21:42:06
【问题描述】:
我有一个这样的 XML 文件;
<Table>
<Row>
<Cell>text id</Cell>
<Cell>First Text<br/>&nbsp;<br/></Cell>
<Cell>Second Text<br/>&nbsp;<br/></Cell>
</Row>
.
.
</Table>
通过使用这些代码,我将<Cell></Cell> 中的每个文本都发送到一个列表变量。
tree = ET.parse(file_path)
root = tree.getroot()
list = []
for row in root.iter(tag='Row'):
for cell in row:
list.append(cell.text)
问题是First Text&lt;br/&gt;&amp;nbsp;&lt;br/&gt;变成First Text<br/>&nbsp;<br/>
我想用我自己分配的占位符替换这些实体字符,因为我必须稍后在我的程序中将它们替换为原始形式。例如;
special character -> [placeholder]
<br/> -> [br/]
& -> [amp]
-> [nbsp]
【问题讨论】:
-
你能解释一下你这样做的原因吗?在大多数情况下,这种诡计是不必要的——它源于对如何处理 XML 数据的误解。
-
我正在做游戏翻译,我正在将这些文本发送到谷歌翻译。 Google Translate API 在遇到这些实体字符时会失败。为了正确翻译,我必须删除/替换这些实体字符,翻译后我必须将它们放回去。当我收集要列出的文本时,这些实体字符会像 <变成
-
不熟悉 Google Translate API - 它以什么形式返回翻译后的文本?列表?字典?
-
因此,您希望在调用 XML 解析器之前 进行字符串替换,这样就不会发生字符实体替换,并且您可以恢复准确的原始文本。那么...您尝试过什么:文本替换?如果您发布该代码,我们或许能够发现问题。
标签: python python-3.x xml xml-parsing