代码之家  ›  专栏  ›  技术社区  ›  user2891883

Biopython和检索期刊全名

  •  0
  • user2891883  · 技术社区  · 7 年前

    from Bio import Entrez
    from Bio import Medline
    
    Entrez.email = "my_email@gmail.com"
    handle = Entrez.esearch(db="pubmed", term="search_term", retmax=20)
    record = Entrez.read(handle)
    handle.close()
    
    idlist = record["IdList"]
    
    records = list(records)
    
    for record in records:
        print("source:", record.get("SO", "?"))
    

    所以这很好,但需要记录。get(“SO”),“?”)仅返回日记账的缩写(例如, 英国医学杂志 新英格兰医学杂志 ). 根据我在手动PubMed搜索中的经验,您可以使用缩写或全名进行搜索,PubMed将以相同的方式处理这些内容,因此我想是否还有一些参数可以获取全名?

    1 回复  |  直到 7 年前
        1
  •  2
  •   cdlane    7 年前

    所以这很好,但需要记录。get(“SO”),“?”)仅返回日记账的缩写

    不,它没有。由于这条线,它甚至不会运行:

    records = list(records)
    

    records

    idlist = record["IdList"]
    

    ['17510654', '2246389'] 旨在通过 Entrez.efetch() 调用以获取实际数据。所以当你这么做的时候 record.get("SO", "?") 在其中一个数字字符串上,代码(再次)爆炸。

    首先 "SO" 字段缩写定义为返回日记账标题缩写(TA),作为其返回内容的一部分。你可能想要 "JT" 日记账标题定义见 MEDLINE/PubMed Data Element (Field) Descriptions . 但这两者都与查找无关。

    from Bio import Entrez
    
    Entrez.email = "my_email@gmail.com"  # change this to be your email address
    handle = Entrez.esearch(db="pubmed", term="cancer AND wombats", retmax=20)
    record = Entrez.read(handle)
    handle.close()
    
    for identifier in record['IdList']:
        pubmed_entry = Entrez.efetch(db="pubmed", id=identifier, retmode="xml")
        result = Entrez.read(pubmed_entry)
        article = result['PubmedArticle'][0]['MedlineCitation']['Article']
    
        print('"{}" in "{}"'.format(article['ArticleTitle'], article['Journal']['Title']))
    

    输出

    > python3 test.py
    "Of wombats and whales: telomere tales in Madrid. Conference on telomeres and telomerase." in "EMBO reports"
    "Spontaneous proliferations in Australian marsupials--a survey and review. 1. Macropods, koalas, wombats, possums and gliders." in "Journal of comparative pathology"
    >
    

    详细信息可在文档中找到: MEDLINE PubMed XML Element Descriptions

    推荐文章