首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Entrez解析来自PubMed的发布数据的问题

使用Entrez解析来自PubMed的发布数据的问题
EN

Stack Overflow用户
提问于 2016-12-22 15:42:45
回答 1查看 804关注 0票数 6

我试图使用Entrez将发布数据导入数据库。搜索部分工作正常,但当我试图解析时:

代码语言:javascript
复制
from Bio import Entrez

def create_publication(pmid):

    handle = Entrez.efetch("pubmed", id=pmid, retmode="xml")
    records = Entrez.parse(handle)
    item_data = records.next()
    handle.close()

..。我得到以下错误:

文件"/venv/lib/python2.7/site-packages/Bio/Entrez/Parser.py",第296行,在解析ValueError(“XML文件不代表列表。请使用Entrez.read而不是Entrez.parse") ValueError: XML文件不代表列表。请使用Entrez.read而不是Entrez.parse

直到几天前,这段代码才开始工作。有什么想法吗这里可能出了什么问题?

此外,查看源代码(http://biopython.org/DIST/docs/api/Bio.Entrez-pysrc.html)并尝试遵循列出的示例,也会出现相同的错误:

代码语言:javascript
复制
from Bio import Entrez 
Entrez.email = "Your.Name.Here@example.org"
handle = Entrez.efetch("pubmed", id="19304878,14630660", retmode="xml")    
records = Entrez.parse(handle) 
for record in records: 
    print(record['MedlineCitation']['Article']['ArticleTitle']) 
handle.close()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-03 02:04:43

正如其他评论和GitHub问题中所记录的那样,这个问题是由NCBI实用程序开发人员故意做出的更改造成的。正如Jhird在这个问题中所描述的,您可以将代码更改为:

代码语言:javascript
复制
from Bio import Entrez 
Entrez.email = "Your.Name.Here@example.org"
handle = Entrez.efetch("pubmed", id="19304878,14630660", retmode="xml")  

records = Entrez.read(handle)      # Difference here
records = records['PubmedArticle'] # New line here  

for record in records: 
    print(record['MedlineCitation']['Article']['ArticleTitle']) 
handle.close()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41286823

复制
相关文章

相似问题

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