我试图使用PubmedID从Pubmed提取6万篇文章的摘要。我试图将摘要导出到字典中。我想我使用的代码有一些问题,特别是在解析Pubmed ID时。请帮助纠正代码,让我知道哪里出错了。
from Bio import Entrez
import sys
Entrez.email = '[email protected]'
abstract_dict = {}
without_abstract = []
pub_ids = sys.argv[1]
f = open(pub_ids, "r")
for i in f:
handle = Entrez.efetch(db="pubmed", id=','.join(map(str, i)),
rettype="xml", retmode="text")
records = Entrez.read(handle)
abstracts = [pubmed_article['MedlineCitation']['Article']['Abstract']['AbstractText'][0]
if 'Abstract' in pubmed_article['MedlineCitation']['Article'].keys()
else pubmed_article['MedlineCitation']['Article']['ArticleTitle']
for pubmed_article in records['PubmedArticle']]
abstract_dict = dict(zip(i, abstracts))
print(abstract_dict)
字符串
Pubmed Ids的一些例子是:
17284678
15531828
11791095
10708056
型
我得到的结果,但抽象或空字典几行。是否有可能出口的结果到制表符分隔的文本文件从字典?
任何建议将不胜感激
谢谢你
1条答案
按热度按时间zrfyljdw1#
注意
Entrez.efetch
只会返回1000条记录,既然你表示要下载60K的摘要,我修改了你的代码,让你批量下载摘要。字符串
如果你这样运行:
型
其中
pubids.txt
看起来像:型
然后你会在
abstracts.csv
中得到以下输出:型