3

次のような XML ファイルがあります。関連するビットは次のとおりです。

<reference>
  <citation>Vander Wal JS, Gang CH, Griffing GT, Gadde KM. Escitalopram for treatment of night eating syndrome: a 12-week, randomized, placebo-controlled trial. J Clin Psychopharmacol. 2012 Jun;32(3):341-5. doi: 10.1097/JCP.0b013e318254239b.</citation>
  <PMID>22544016</PMID>
</reference>

PMIDPyQuery を使用して XML を解析し、フィールドの値を見つけようとしています。

    from pyquery import PyQuery as pq

    text = open(f, 'r').read()
    d = pq(text)
    data = {}       
    data['nct_id'] = d('nct_id').text()

    print d('reference')
    reference = d('reference')
    print reference('PMID')
    data['pmid'] = reference('PMID').text()

    print data['PMID']

なぜこれが機能しないのですか?コンソールにはreference、最初の print ステートメントの完全な内容が表示され、その後に 2 つの空の値が続きます。

<reference>
    <citation>Vander Wal JS, Gang CH, Griffing GT, Gadde KM. Escitalopram for treatment of night eating syndrome: a 12-week, randomized, placebo-controlled trial. J Clin Psychopharmacol. 2012 Jun;32(3):341-5. doi: 10.1097/JCP.0b013e318254239b.</citation>
    <PMID>22544016</PMID>
  </reference>

サンプルコードが示すように、ドキュメント内の他のリーフノード ( などnct_id) を を使用してうまく見つけることができます。.find()

PyQuery が大文字のタグを好まないということですか?

4

1 に答える 1

3

使用するパーサーを指定すると、機能します。

d = pq(text, parser='xml')
于 2016-08-24T16:56:51.423 に答える