所以我试着从NCBI检索一些数据。我之前写的代码是由一个更有经验的程序员重写的,但它没有以我想要的格式返回结果,所以我做了一些修改/添加:
for plant, disease in plant_disease_list:
search_query = generate_search_query(plant, disease)
handle1 = Entrez.esearch(db="pmc", term=search_query, retmax="10")
record1 = Entrez.read(handle1)
pubmed_ids = record1.get("IdList")
if pubmed_id in pubmed_ids=="":
print("Plant: {} Disease: {} PubmedID: DOI:".format(plant, disease))
else:
for pubmed_id in pubmed_ids:
handle2 = Entrez.esummary(db="pmc", id=pubmed_id)
records = Entrez.read(handle2)
for record in records:
doi = record.get("DOI")
print("Plant: {} Disease: {} PubmedID: {} DOI: http://doi.org/{}".format(plant, disease, pubmed_id, doi))其中plant_disease_list是先前定义的列表。唯一的问题是,使用下面的代码,我得到了错误:
Traceback (most recent call last):
File "scraperscript_python.py", line 28, in <module>
if pubmed_id in pubmed_ids=="":
NameError: name 'pubmed_id' is not defined如果我删除if/else循环,并返回到常规的嵌套for循环,我不会得到语法错误,但是代码不会打印我想要的数据,也就是说,它只打印那些找到PMID的植物-病害对的数据。知道我可能做错了什么吗?
发布于 2020-02-28 15:28:48
在'if pubmed_id in pubmed_ids=="":‘的位置尝试一下
for plumbed_id in plumbed_ids:
if plumbed_id == "":
print("Plant: {} Disease: {} PubmedID: DOI:".format(plant, disease))
else:
your code here..发布于 2020-02-28 15:22:15
当您第一次遇到语句if pubmed_id in pubmed_ids=="":时,它并没有定义。
只有在之后,当pubmed_ids上的循环至少执行一次时,pubmed_id才会有值。
此外,if pubmed_id in pubmed_ids=="":是无意义的。
https://stackoverflow.com/questions/60446978
复制相似问题