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

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行,在parse中
raise valueerror(“XML文件不表示列表。请使用entrez.read而不是entrez.parse“)valueerror:xml文件
不代表列表。请用entrez.read代替
中心解析
这段代码几天前才开始工作。你知道这里会出什么问题吗?
此外,查看源代码(http://biopython.org/DIST/docs/api/Bio.Entrez-pysrc.html)并尝试遵循列出的示例,会出现相同的错误:
from Bio import Entrez
Entrez.email = "[email protected]"
handle = Entrez.efetch("pubmed", id="19304878,14630660", retmode="xml")
records = Entrez.parse(handle)
for record in records:
    print(record['MedlineCitation']['Article']['ArticleTitle'])
handle.close()

最佳答案

如其他评论和GitHub Issue中所述,该问题是由ncbi entrez实用程序开发人员的故意更改引起的。如本期jhird所述,您可以将代码更改为以下内容:

from Bio import Entrez
Entrez.email = "[email protected]"
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()

关于python - 使用Entrez解析来自PubMed的发布数据的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41286823/

10-11 03:58