-1

xml ドキュメントを取得する必要がある xml ファイルがあります。以下は私が持っているxmlドキュメントです。

-<orcid-message>
   -<orcid-profile type="user">
      -<orcid-activities>
         -<orcid-works>
            -<orcid-work put-code="23938140" visibility="public">
               -<work-contributors>
                  -<contributor>
                       -<credit-name visibility="public">Tania Maes</credit-name>
                  -<contributor>
                       -<credit-name visibility="public">Francisco Avila Cobos</credit-name>
                  -<contributor>
                       -<credit-name visibility="public">Franco Liala Manus</credit-name>

寄稿者の名前を取得したい:これまでに試しました:

contributors_name = (doc['orcid-message']['orcid-profile']
                        ['orcid-activities']['orcid-works']
                        ['orcid-work']['work-contributors']
                        ['contributor']['credit-name']  )

print(contributors_name)

どこが間違っているのか教えてください。ありがとうございました。

4

1 に答える 1

0

" TypeError: list indices must be integers, not str: このエラーが発生しました"

contributorエラー メッセージは、複数の要素を含む XML が原因で問題が発生したことを示しています。そのため、コードの一部まではリストを返し、辞書のように['contributor']キー (つまり ) で直接アクセスすることはできません。['credit-name']取得したいリスト内の項目を 1 つ選択する必要があります。credit-nameたとえば、最初の項目から:

contributors = doc['orcid-message']['orcid-profile'] \
    ['orcid-activities']['orcid-works'] \
    ['orcid-work']['work-contributors'] \
    ['contributor']
contributor_name = contributors[0]['credit-name']

または、リスト内包表記を使用credit-nameしてすべての貢献者から取得できます。

contributors_name = [contrib['credit-name']['#text'] for contrib in contributors]
print(contributors_name)

出力:

[u'Tania Maes', u'Francisco Avila Cobos', u'Franco Liala Manus']
于 2016-07-17T13:04:27.090 に答える