正在从xml检索数据。

2024-05-15 14:25:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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)

请告诉我哪里出了问题。非常感谢。你知道吗


Tags: 文件name文档messagexmlpublicprofileorcid
1条回答
网友
1楼 · 发布于 2024-05-15 14:25:16

"TypeError: list indices must be integers, not str : I get this error"

错误消息表明问题是由包含多个contributor元素的XML引起的,因此在['contributor']部分之前的代码将返回一个列表,而这个列表又不能像字典一样通过键(即['credit-name'])直接访问。您需要从列表中选择一个要从中获取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']

相关问题 更多 >