0

我有这样的xml:

<rule>
    <word>I</word>
    <word>need</word>
    <word>more</word>
    <marker>
    <word>money</word>
    </marker>
    <word>now</word>
</rule>

我可以通过以下方式获取文本:

 import xml.etree.ElementTree as ET
 tree = ET.parse("1.xml")
 for rule in tree.iter("rule"):
    for word in rule.iter("word"):
        print "%s" % word.text,

我会得到:

I need more money now

如何将标记标签替换为(和 /marker 为)。换句话说,结果必须是:

I need more (money) now

elementtree可以吗?提前致谢!

4

1 回答 1

0

与其只迭代 的word孩子rule,不如迭代 的所有孩子rule并采取相应的行动。下面应该给你一个想法:

import xml.etree.ElementTree as ET
tree = ET.parse("1.xml")
for rule in tree.iter("rule"):
    for child in rule:
        if child.tag == 'word':
            print "%s" % child.text
        elif child.tag == 'marker':
            print "("
            for subchild in child:
                if subchild.tag == 'word':
                    print "%s" % subchild.text
            print ")"

这当然可以变得更加 Pythonic,但它应该给你一个想法。

于 2012-06-21T19:55:02.410 回答