gpt4 book ai didi

python - 使用 Python 将多个文本替换为 XML 中相应的文本

转载 作者:数据小太阳 更新时间:2023-10-29 02:37:12 25 4
gpt4 key购买 nike

如何用相应的英文文本替换日文文本?我有数百个 AliasName 需要替换。由于我是 python 和 XML 的新手,因此非常感谢一步一步的指导。

这是我的 xml 文件的样子:

<Workspace>
<Dataset>
<DataElement>
<Name>POP</Name>
<Fields>
<Field>
<Name>State</Name>
<AliasName>?</AliasName> # replace to <AliasName>State</AliasName>
</Field>
<Field>
<Name>City</Name>
<AliasName>??</AliasName> # replace to <AliasName>City</AliasName>
</Field>
(...)

这是我已经走了多远。我创建了一个字典,希望我可以用它来替换(?)

>>> x = ("State", "州", "City", "都市", "Town", "町")
>>> dic = dict(x[n:n+2] for n in xrange(0, len(x), 2))
>>> print dic # Japanese appears strange in python GUI
{'Town': '\x92\xac', 'City':'\x93s\x8es', 'State': '\x8fB'}

我还设法选择并显示了 <AliasName></AliasName> 之间的所有日文文本.

from xml.dom import minidom
xdoc = minidom.parse(r"D:\Desktop\python\src\sample.xml")
workspace = xdoc.getElementsByTagName("AliasName")
for i, element in enumerate(workspace):
print (i, element.childNodes[0].data)

从这里我被困住了。如何替换和保存 xml 的更新?

最佳答案

  1. 使用 Unicode 字符串。在模块顶部定义源编码。
  2. 您可以使用 ElementTree 而不是 minidom。它有更好的 API。

例子

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import xml.etree.cElementTree as etree

en2jp = {u"State": u"州", u"City": u"都市", u"Town": u"町"} # English -> Japanese

tree = etree.parse(filename)
for field in tree.iterfind('.//Fields/Field'):
name, alias = [field.find(tag) for tag in ['Name', 'AliasName']]
if name is None or name.text is None or alias is None: continue
alias.text = en2jp.get(name.text.strip(), alias.text)
tree.write('output.xml', encoding='utf-8')

您不需要字典来设置 <AliasName> 的文本等于 <Name> 的文本来自同一 <Field> 的标签:

#!/usr/bin/env python
import xml.etree.cElementTree as etree

tree = etree.parse("input.xml")
for field in tree.iterfind('.//Fields/FieldArray/Field'):
name, alias = [field.find(tag) for tag in ['Name', 'AliasName']]
if name is None or alias is None:
continue # skip if either <Name> or <AliasName> are not found
alias.text = name.text # set <AliasName> text to be the same as <Name>

tree.write('output.xml', encoding='utf-8')

关于python - 使用 Python 将多个文本替换为 XML 中相应的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7991532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com