Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python将多个文本替换为相应的XML文本_Python_Xml_Dom_Replace - Fatal编程技术网

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

使用Python将多个文本替换为相应的XML文本,python,xml,dom,replace,Python,Xml,Dom,Replace,如何用相应的英语文本替换日语文本?我有数百个别名需要替换。由于我不熟悉python和XML,因此非常希望能提供一个分步指导 以下是我的xml文件的外观: <Workspace> <Dataset> <DataElement> <Name>POP</Name> <Fields> <Field>

如何用相应的英语文本替换日语文本?我有数百个别名需要替换。由于我不熟悉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>
            (...)
我还设法选择和显示所有日语文本之间


我被困在这里了。如何在xml上替换和保存更新?

如何使用string.replace函数

string.replacestr,旧的,新的[,maxreplace] 返回字符串str的副本,其中所有出现的子字符串old都替换为new。如果给定可选参数maxreplace,则替换第一个maxreplace引用

使用Unicode字符串。在模块顶部定义源编码。 您可以使用ElementTree而不是minidom。它有更好的API。 实例 您不需要使用字典将的文本设置为与来自同一位置的标记的文本相等:


哇!有几个问题。如果这个领域有8个孩子呢?这对你的写作方式有影响吗?@user1027101:我已经更新了答案。请参见或行后面的代码。@Sebastian:非常感谢您的更新!!现在我正试图过去,但它不让我。当我从xml.etree.cElementTree作为etree@user1027101当前位置我已经纠正了几个拼写错误。您可以尝试自己修复此类错误。简单的错误可以帮助您熟悉代码的工作方式。它的行为与预期的一样,但不符合问题的要求。您现在应该可以更改它了。@Sebastian:非常感谢您的帮助。在我用你的例子试了几次之后,我终于成功了!非常非常激动人心。现在我开始工作了!非常感谢你的帮助!
>>> 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'}
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)
#!/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')
#!/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')