可以将要查询的ID分割成单个的字符串,逐个进行查询。具体操作可参考以下示例代码:
from Bio import Entrez
Entrez.email = "your.email@example.com"
def citation_search(id_list):
"""
Query Pubmed database for citations of given IDs
:param id_list: list of Pubmed IDs
:return: list of citation strings
"""
citations = []
for id in id_list:
handle = Entrez.elink(dbfrom="pubmed", id=id, linkname="pubmed_pubmed_refs")
record = Entrez.read(handle)
handle.close()
if "LinkSetDb" in record[0]:
linksetdb = record[0]["LinkSetDb"]
if len(linksetdb) > 0 and "Link" in linksetdb[0]:
link_lst = []
for link in linksetdb[0]["Link"]:
link_lst.append(link["Id"])
link_str = ",".join(link_lst)
handle = Entrez.esummary(db="pubmed", id=link_str)
document = Entrez.read(handle)
handle.close()
summary = document[0]["Title"]
summary += ". " + document[0]["Source"]
summary += ". " + document[0]["PubDate"]
summary += ". PMID: " + ", ".join(link_lst)
citations.append(summary)
return citations
id_list = ["31059020", "29411702", "29126162", "29077913", "29059547"]
citations = citation_search(id_list)
for cit in citations:
print(cit + "\n")
该函数可以接受一个Pubmed ID的列表,然后逐个进行查询。查询结果会以列表的形式返回,每个结果单独作为一个字符串。字符串中包含了查询到的相关信息,如标题、出版物、日期和相关的PMID等。