我对Python还是很陌生,并且正在尝试使用元素树从包含大量研究论文的元数据的XML文件中提取多个字段。虽然我能够使用两种不同的方法(元素树和XPath-如下所示)分别获得我想要的字段,但我需要的是一种将它们组合为一段代码的方法,该代码将返回所有我的商品ID和相应的资助信息文章。
更新:
该示例的期望输出为: “ 20.2019 / ABC-2019-0111, 这项工作得到了美国国立卫生研究院的支持。
理想情况下,每篇文章的数据都将由一个特殊字符分隔,我可以使用该字符来分隔Excel中的结果。
我以前没有使用过lxml,但是很高兴尝试最有效的方法。
XML示例:
<root>
<article>
<front>
<article-meta>
<article-id pub-id-type="publisher-id">ABC-2019-0111</article-id>
<article-id pub-id-type="doi">20.2019/ABC-2019-0111</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Science</subject>
</subj-group>
</article-categories>
</article-meta>
<body>
<back>
<sec id="sec7" sec-type="funding">
<title>Funding</title>
<p>This work was supported by the NIH</p>
</sec>
</back>
</body>
</front>
</article>
</root>
to get article IDs:
for elem in tree.iter(tag='article-id'): print(elem.text)
to get funding info:
doc = ET.parse('articles.xml')
print([p.text for p in doc.findall('.//sec[@sec-type="funding"]/p')])