尝试解析pubmed EFetch时出现TypeError

时间:2013-05-10 22:11:27

标签: biopython

我是这个python / biopyhton的新手,所以我正在努力弄清楚为什么下面的代码,直接从Biopython Cookbook中取出,并没有做我期望的事情。

我原以为它最终会得到解释器显示两个包含相同数字的列表,但我得到的只是一个列表,然后是一条消息说 TypeError:'generator'对象不可订阅

我猜测Medline.parse步骤出了问题,并且没有以允许后续交互提取PMID值的方式处理efetch的结果。或者,efetch没有返回任何内容。

指出我做错了什么?

由于

from Bio import Medline
from Bio import Entrez
Entrez.email = 'A.N.Other@example.com'

handle = Entrez.esearch(db="pubmed", term="biopython")
record = Entrez.read(handle)
print(record['IdList'])

items = record['IdList']
handle2 = Entrez.efetch(db="pubmed", id=items, rettype="medline", retmode="text")
records = Medline.parse(handle2)
for r in records:
    print(records['PMID'])

1 个答案:

答案 0 :(得分:1)

您正在尝试打印records['PMID'] generator。我认为你打算做print(r['PMID']),它会在每次迭代中打印当前记录字典对象中的'PMID'条目。 Bio.Medline.parse()文档中给出的示例证实了这一点。