首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用Biopython时: NameError:名称'pubmed_id‘没有定义,尽管之前已经定义了它?

在使用Biopython时: NameError:名称'pubmed_id‘没有定义,尽管之前已经定义了它?
EN

Stack Overflow用户
提问于 2020-02-28 15:18:48
回答 2查看 72关注 0票数 0

所以我试着从NCBI检索一些数据。我之前写的代码是由一个更有经验的程序员重写的,但它没有以我想要的格式返回结果,所以我做了一些修改/添加:

代码语言:javascript
复制
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是先前定义的列表。唯一的问题是,使用下面的代码,我得到了错误:

代码语言:javascript
复制
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的植物-病害对的数据。知道我可能做错了什么吗?

EN

回答 2

Stack Overflow用户

发布于 2020-02-28 15:28:48

在'if pubmed_id in pubmed_ids=="":‘的位置尝试一下

代码语言:javascript
复制
for plumbed_id in plumbed_ids:
      if plumbed_id == "":
           print("Plant: {} Disease: {} PubmedID: DOI:".format(plant, disease))
else:
    your code here..
票数 1
EN

Stack Overflow用户

发布于 2020-02-28 15:22:15

当您第一次遇到语句if pubmed_id in pubmed_ids=="":时,它并没有定义。

只有在之后,当pubmed_ids上的循环至少执行一次时,pubmed_id才会有值。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60446978

复制
相关文章

相似问题

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