首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用xml.etree进行Python xml解析

使用xml.etree进行Python xml解析
EN

Stack Overflow用户
提问于 2021-05-04 18:30:58
回答 1查看 24关注 0票数 0
代码语言:javascript
复制
import os
from xml.etree import ElementTree
file_name = 'sex.xml'
full_file = os.path.abspath(os.path.join('data', file_name))

dom = ElementTree.parse(full_file)
pubmed = dom.findall('PubmedArticle')
name = dom.findall('PubmedArticle/AuthorList/Author')

for p in pubmed:
    pmid = p.find('PMID').text
    print('PMID: {}'.format(pmid))
    for n in name:
       LastName = n.find('LastName').text
       print('{}'.format(LastName))
    print('========\n')

我想要获取每个PubmedArticle的名称

但是这段代码可以一次获得完整的名称

代码语言:javascript
复制
<root>
  <PubmedArticle>
      <PMID>1</PMID>
      <AuthorList>
        <Author>
          <LastName>Makar</LastName>
        </Author>
        <Author>
          <LastName>McMartin</LastName>
        </Author>
       </AuthorList>
  </PubmedArticle>
  <PubmedArticle>
      <PMID>2</PMID>
      <AuthorList>
        <Author>
          <LastName>Palese</LastName>
        </Author>
        <Author>
          <LastName>Tephly</LastName>
        </Author>
       </AuthorList>
  </PubmedArticle>
</root>

如何将名称除以PMID,如下所示

结果

PMID1: Makar,McMartin

PMID 2: Palese,Tephly

EN

回答 1

Stack Overflow用户

发布于 2021-05-04 18:47:39

pubmedname是两个独立的列表。你必须分别查询每篇文章的作者:

代码语言:javascript
复制
articles = dom.findall('PubmedArticle')
for article in articles:
    pmid = article.findtext('PMID')
    print(f'PMID: {pmid}')
    authors = article.findall('AuthorList/Author')
    for author in authors:
        lastname = author.findtext('LastName')
        print(lastname)
    print('========\n')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67383045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档