【发布时间】:2016-10-10 23:46:09
【问题描述】:
我正在开展一个项目,该项目要求我使用来自 Excel 电子表格的输入搜索 pubmed 并打印结果计数。我一直在使用xlrd 和entrez 来完成这项工作。这是我尝试过的。
-
我需要使用作者姓名、他/她的医学院、年龄范围和他/她的导师姓名搜索
pubmed,这些都在Excel电子表格中。我使用xlrd将包含所需信息的每一列转换为字符串列表。from xlrd import open_workbook book = xlrd.open_workbook("HEENT.xlsx").sheet_by_index(0) med_name = [] for row in sheet.col(2): med_name.append(row) med_school = [] for row in sheet.col(3): med_school.append(row) mentor = [] for row in sheet.col(9): mentor.append(row) -
我已经设法使用 Entrez 打印了我的特定查询的计数。
from Bio import Entrez Entrez.email = "your@email.edu" handle = Entrez.egquery(term="Jennifer Runch AND ((2012[Date - Publication] : 2017[Date - Publication])) ") handle_1 = Entrez.egquery(term = "Jennifer Runch AND ((2012[Date - Publication] : 2017[Date - Publication])) AND Leoard P. Byk") handle_2 = Entrez.egquery(term = "Jennifer Runch AND ((2012[Date - Publication] : 2017[Date - Publication])) AND Southern Illinois University School of Medicine") record = Entrez.read(handle) record_1 = Entrez.read(handle_1) record_2 = Entrez.read(handle_2) pubmed_count = [] for row in record["eGQueryResult"]: if row["DbName"] == "pubmed": pubmed_count.append(row["Count"]) for row in record_1["eGQueryResult"]: if row["DbName"] == "pubmed": pubmed_count.append(row["Count"]) for row in record_2["eGQueryResult"]: if row["DbName"] == "pubmed": pubmed_count.append(row["Count"]) print(pubmed_count) >>>['3', '0', '0']问题是我需要将学生姓名(“Jennifer Runch”)替换为学生姓名列表中的下一个学生姓名(“med_name”),将医学院替换为下一个学校,以及当前导师的姓名列表中的下一位导师的姓名。
我认为我应该在将我的电子邮件声明给pubmed 后编写一个 for 循环,但我不确定如何将这两个代码块链接在一起。有谁知道连接两个代码块的有效方法,或者知道如何以比我尝试过的更有效的方式来做到这一点?
谢谢!
【问题讨论】:
-
问题还没有解决吗?
-
@MaximilianPeters 我对此有一些后续问题,我将其发布到另一个线程:stackoverflow.com/questions/40161460/…
标签: python xlrd biopython pubmed