xmlからデータの抽出を行う xml.dom.minidom
基本的な追加方は19.7. xml.dom.minidom — 軽量な DOM 実装 — Python 2.7ja1 documentationを見ればわかることなのが.ただ,ちょっとわかりにくいので,Python で XML 操作 | TM Lifeを見た方がよい.
ところで,「コメントのみを記述したxmlノードを抽出するにはどうしたものか?」と調べてみたところ,下のように書けばよいことがわかった.
<!-- V1 --> <fusion source="yd_«" target="_" rev="-"/> <!-- II. Verbes irréguliers --> <!-- A. Verbes irréguliers avec radicaux 2 en -d --> <!-- V2 --> <fusion source="d_:" target="_" rev="-"/> <!-- V3 --> <fusion source="rd_¨" target="ar_" rev="-"/> <!-- V4 --> <fusion source="ad_~" target="_" rev="-"/> <!-- V5 -->
のようなxmlからコメント部分のを抽出する.
import xml.dom.minidom dom = xml.dom.minidom.parse("morpho.fa") present_stem_list=[]; for node in dom.documentElement.childNodes: if node.nodeType in [node.COMMENT_NODE]: nodetext=(node.data).strip(u' '); if nodetext in [u'V1', u'V2', u'V3', u'V4', u'V5', u'V6', u'V7', u'V8', u'V8', u'V9', u'V10', u'V11', u'V12', u'V13', u'V14', u'V15', u'V16', u'V17', u'V18', u'V19', u'V20', u'V21', u'V22', u'V23', u'V24', u'V25', u'V26', u'V27', u'V28:Light Verbs', u'V29:Light Verbs with alternate stems']:
if node.nodeType in [node.COMMENT_NODE]: の記述でノードの種類がコメントノードの時のみを指定している.さらには,node.dataでコメントノードの中身を取得している.
本当はその後,Vが含まれているノードのみを正規表現で獲得したかったのだが,どうしてだが,それができなかった.
なので,みっともない格好ではあるが,リスト表記で記述している.(Vの数があらかじめ決まっているからこそできることではある)