問題タブ [xmltodict]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 形式が異なるため、XML ファイルからデータを取得できません
すべて次の形式の XML ファイルHMDB61152.xmlを取得し、glob. 各ファイルについて、、、、のリストなどaccession、それぞれの詳細を取得する必要があります。直面している問題のために戦略を変更する必要があるかもしれませんが、私は伝統的に XML ファイルではなくリストで作業するのが好きなので、使用した各 XML を解析します。namediseasesxmltodict
すべての XML ファイルがツリーの同じ最初のレベルにあるためname、簡単にプルできます。acc
path = '/Users/me/Downloads/hmdb_metabolites'
for data_file in glob.glob(os.path.join(path,'*.xml')):
diseases=[]
with open(data_file) as fd:
doc = xmltodict.parse(fd.read())
name = doc['metabolite']['name']
acc = doc['metabolite']['accession']
したがって、基本的にこの時点で、疾患情報には 3 つのオプションがあります。
- 各ツリー内に複数の
diseaseタグがあります。diseasesつまり、指定された登録には 2 つ以上の疾患があります。 diseaseツリー内に1 つdiseasesあるということは、加入者が 1 つの病気しか持っていないことを意味します。また- ツリーに
diseaseはまったくありません。diseases
3 つのケースを処理できるループを作成する必要がありますが、それが失敗しています。これまでの私のアプローチは次のとおりです。
問題は、複数の病気がある場合、次の形式で名前を取得する必要があることですdoc['metabolite']['diseases']['disease'][x]['name']。病気の x ごとに。しかし、病気が 1 つしかないものについては、インデックスがまったくないため、その 1 つの病気の名前を引き出す唯一の方法は、doc['metabolite']['diseases']['disease']['name'].
スクリプトが失敗しているのは、1 つだけの病気のケースに遭遇するとすぐに、 if をテストしようとすると KeyError が返されるためですdoc['metabolite']['diseases']['disease'][0]) == True。誰かがこれを理解するのを手伝ってくれるなら、それは素晴らしいことです。または、より適切な戦略に私を導いてください。
python - Linux の Python の特定のインストールにパッケージを追加する
Linux 上の Python に xmltodict パッケージを追加しようとしています。
私の Linux ビルドには 2 つの Python がインストールされています。Python 2.7 (デフォルト) および Python 3.5 (Anaconda インストールの形式)。xmltodict を Python 3 インストールに追加したいのですが、使用するsudo apt-get install python-xmltodictと、デフォルトの Python 2.7 インストールに追加されます。
デフォルトを変更したりpipを使用したりせずに、このパッケージをPython 3インストールに追加するにはどうすればよいですか? 仮想環境でインストールを再構築する必要もありません
python - Python - 大きな XML ファイルを比較する
Python - 2.7.3 2 つの xml ファイルを比較したい (サイズは約 - 100 MB) このスレッドでの議論に基づいてコードを更新しました。 Pythonで2つのxmlファイルを比較する
GetChildren() の代わりに element.iter() を使用しました。テストの目的で、xml ファイルを編集し、サイズを 1MB と非常に短くしました。
以下はコードです。
私はそれを次のように呼びます
しかし、それは私に次のエラーを与えています
私は何を間違っていますか?Zip 機能はループするのに非常に重いですか? 代替手段はありますか。XML比較をしながら、a)Text B)tagを比較したい