尽管使用Biopython:NameError:即使先前已定义名称'pubmed_id',也未定义?

问题描述 投票:0回答:1

所以我试图从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的疾病对。对我可能做错的事有任何想法吗?

python python-3.x web-scraping bioinformatics biopython
1个回答
0
投票

当您初次遇到该语句if pubmed_id in pubmed_ids=="":时未定义。

仅此后,pubmed_ids上的循环至少执行一次后,pubmed_id才具有值。

此外,if pubmed_id in pubmed_ids=="":毫无意义。

© www.soinside.com 2019 - 2024. All rights reserved.