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 to)に置き換えるにはどうすればよいですか。言い換えると、結果は次のようになります。

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 に答える