0

これは、Pythonへの私の最初の進出の1つです。私は通常bashを使い続けますが、MinidomはXML解析のニーズに完全に適合しているように思われるので、試してみます。

私が理解できない最初の質問は、ファイルを解析するときの「grep-v」に相当するものは何ですか?

私が引っ張っている各オブジェクトは、特定のタグで始まります。上記のタグ内で、タグ内に埋め込まれた特定の文字列に基づいてデータの行を除外したい場合、これをどのように達成しますか?

私が今持っている擬似コード(除外なし):

mainTag = xml.getElementsByTagName("network_object")
name = network_object.getElementsByTagName("Name")[0].firstChild.data

「cluster」を含む文字列を除いて、すべての「name」フィールドがデータ出力されるようにしたいと思います。network_objectsで複数の検索を行うので、そのレベルで検索する必要があると思いますが、方法がわかりません。

Etreeは私にたくさんの問題を与えています、あなたは私にこれをミニダムで行うためのいくつかの論理を与えることができますか?

これは明らかに機能しません:

name = network_object.getElementsByTagName("Name")[0].firstChild.data
if name is not 'cluster' in name
continue
4

1 に答える 1

3

まず、minidomモジュールから離れます。Minidomは、他の言語のDOMをすでに知っていて、他のAPIを本当に学びたくない場合に最適です。標準ライブラリには、より簡単な代替手段があります。代わりにElementTreeAPIを使用します。

通常は、一致をループし、除外する一致をスキップします。

from xml.etree import ElementTree

tree = ElementTree.parse(somefile)

for name in tree.findall('.//network_object//Name'):
    if name.text is not None and 'cluster' in name.text:
        continue  # skip this one
于 2013-03-20T18:53:28.983 に答える