1

次のようなxmlファイルがあります。

sample.xml

<root>
    <keyword_group>
        <headword>sell/buy</headword>
    </keyword_group>
</root>

headword.textを「/」で分割してから、それぞれをタグでラップしたいと思います。そして最後に、タグを削除する必要があります。私が期待する出力は次のとおりです。

<root>
    <keyword_group>
        <word>sell</word>
        <word>buy</word>
    </keyword_group>
</root>

私の醜いスクリプトは次のとおりです。

import lxml.etree as ET

xml = '''\
<root>
    <keyword_group>
        <headword>sell/buy</headword>
    </keyword_group>
</root>
'''

root = ET.fromstring(xml)
headword = root.find('.//headword')
if headword is not None:
    words = headword.text.split('/')
    for word in words:
        ET.SubElement(headword, 'word')
        for wr in headword.iter('word'):
            if not wr.text:
                wr.text = word
    headword.text = ''

print(ET.tostring(root, encoding='unicode'))

しかし、これは複雑すぎて、見出しのタグを削除できませんでした。

4

1 に答える 1

2

lxmlの使用:

import lxml.etree as ET

xml = '''\
<root>
    <keyword_group>
        <headword>sell/buy</headword>
    </keyword_group>
</root>
'''

root = ET.fromstring(xml)
headword = root.find('.//headword')
if headword is not None:
    words = headword.text.split('/')
    parent = headword.getparent()
    parent.remove(headword)
    for word in words:
        ET.SubElement(parent, 'word').text = word

print(ET.tostring(root, encoding='unicode'))

収量

<root>
    <keyword_group>
        <word>sell</word><word>buy</word></keyword_group>
</root>
于 2013-01-31T13:17:39.950 に答える