首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用解析PubMed中心XML

使用解析PubMed中心XML
EN

Stack Overflow用户
提问于 2014-08-01 08:10:39
回答 1查看 1.9K关注 0票数 0

我试图使用Biopython的Biopython解析函数解析PubMed中央XML文件。这就是我迄今为止尝试过的:

代码语言:javascript
复制
from Bio import Entrez
for xmlfile in glob.glob ('samplepmcxml.xml'):
   print xmlfile
   fh = open (xmlfile, "r")
   read_xml (fh, outfp)
   fh.close()

def read_xml (handle, outh):
   records = Entrez.parse(handle)
   for record in records:
      print record

我得到了以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
File "3parse_info_from_pmc_nxml.py", line 78, in <module>
read_xml (fh, outfp)
File "3parse_info_from_pmc_nxml.py", line 10, in read_xml
for record in records:
File "/usr/lib/pymodules/python2.6/Bio/Entrez/Parser.py", line 137, in parse
self.parser.Parse(text, False)
File "/usr/lib/pymodules/python2.6/Bio/Entrez/Parser.py", line 165, in startNamespaceDeclHandler
raise NotImplementedError("The Bio.Entrez parser cannot handle XML data that make use of XML namespaces")
NotImplementedError: The Bio.Entrez parser cannot handle XML data that make use of XML namespaces

我已经下载了archivearticle.dtd文件。是否还有其他需要安装的DTD文件来描述PMC文件的架构?是否有人成功地使用Bio函数或任何其他方法来解析PMC文章?

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-01 11:13:40

使用另一个解析器,如迷你型

代码语言:javascript
复制
from xml.dom import minidom

data = minidom.parse("pmc_full.xml")

现在,根据您想要提取的数据,深入研究XML并从中获得乐趣:

代码语言:javascript
复制
for title in data.getElementsByTagName("article-title"):
    for node in title.childNodes:
        if node.nodeType == node.TEXT_NODE:
            print node.data
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25075690

复制
相关文章

相似问题

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