次のような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'))
しかし、これは複雑すぎて、見出しのタグを削除できませんでした。