Entrez 增加 retmax 时回溯 KeyError
Traceback KeyError when Entrez increases retmax
我正在尝试使用 biopython entrez 收集已发表的文章列表。我想从 medline 格式中收集文章的某些部分。如果没有设置 retmax,我在下面写的代码就可以工作。它默认为 20 篇文章,但是,我想收集更多的文章。如果我将 retmax 设置为更高的数字,我会收到以下错误。
#!/usr/bin/env python
from Bio import Entrez, Medline
Entrez.email = "foobar@gmail.edu"
handle = Entrez.esearch(db="pubmed",
term="stanford[Affiliation]", retmax=1000)
record = Entrez.read(handle)
pmid_list = record["IdList"]
more_data = Entrez.efetch(db="pubmed", id=",".join(pmid_list), rettype="medline", retmode="text")
all_records = Medline.parse(more_data)
record_list = []
for record in all_records:
record_dict = {'ID': record['PMID'],
'Title': record['TI'],
'Publication Date': record['DP'],
'Author': record['AU'],
'Institute': record['AD']}
record_list.append(record_dict)
然后我收到错误
Traceback (most recent call last):
File "./pubmed_pull.py", line 42, in <module>
'Institute': record['AD']}
KeyError: 'AD'
我不确定为什么在增加文章数量时会出现错误。
使用 dict.get(key)
而不是使用 dict[key]
获取密钥。如果密钥不存在,这样做将 return None
。
for record in all_records:
record_dict = {'ID': record.get('PMID'),
'Title': record.get('TI'),
'Publication Date': record.get('DP'),
'Author': record.get('AU'),
'Institute': record.get('AD')}
我正在尝试使用 biopython entrez 收集已发表的文章列表。我想从 medline 格式中收集文章的某些部分。如果没有设置 retmax,我在下面写的代码就可以工作。它默认为 20 篇文章,但是,我想收集更多的文章。如果我将 retmax 设置为更高的数字,我会收到以下错误。
#!/usr/bin/env python
from Bio import Entrez, Medline
Entrez.email = "foobar@gmail.edu"
handle = Entrez.esearch(db="pubmed",
term="stanford[Affiliation]", retmax=1000)
record = Entrez.read(handle)
pmid_list = record["IdList"]
more_data = Entrez.efetch(db="pubmed", id=",".join(pmid_list), rettype="medline", retmode="text")
all_records = Medline.parse(more_data)
record_list = []
for record in all_records:
record_dict = {'ID': record['PMID'],
'Title': record['TI'],
'Publication Date': record['DP'],
'Author': record['AU'],
'Institute': record['AD']}
record_list.append(record_dict)
然后我收到错误
Traceback (most recent call last):
File "./pubmed_pull.py", line 42, in <module>
'Institute': record['AD']}
KeyError: 'AD'
我不确定为什么在增加文章数量时会出现错误。
使用 dict.get(key)
而不是使用 dict[key]
获取密钥。如果密钥不存在,这样做将 return None
。
for record in all_records:
record_dict = {'ID': record.get('PMID'),
'Title': record.get('TI'),
'Publication Date': record.get('DP'),
'Author': record.get('AU'),
'Institute': record.get('AD')}