Python 如何让pybtex将缺少的字段读取为NULL,而不是跳过记录?
我一直在使用pybtex(使用的是修改后的版本)将记录从.bib文件传递到.csv文件,就像这样Python 如何让pybtex将缺少的字段读取为NULL,而不是跳过记录?,python,bibtex,Python,Bibtex,我一直在使用pybtex(使用的是修改后的版本)将记录从.bib文件传递到.csv文件,就像这样 从pybtex.database.input导入bibtex 导入csv parser=bibtex.parser() bibdata=parser.parse_文件(“../../bib/small.bib”) #创建csv文件 打开('smallbib.csv',mode='w')作为csv\u文件: fieldnames=['DOI', “数字”] writer=csv.DictWriter(
从pybtex.database.input导入bibtex
导入csv
parser=bibtex.parser()
bibdata=parser.parse_文件(“../../bib/small.bib”)
#创建csv文件
打开('smallbib.csv',mode='w')作为csv\u文件:
fieldnames=['DOI',
“数字”]
writer=csv.DictWriter(csv_文件,fieldnames=fieldnames,lineterminator='\n')
writer.writeheader()
对于bibdata.entries中的bib_id:
b=bib数据。条目[bib_id]。字段
尝试:
writer.writerow({'DOI':b['DOI'],
“编号”:b[“编号”],})
除了(键错误):
持续
但是,如果.bib文件中不存在字段,此脚本将忽略整个记录。如何让脚本写入空单元格或空白单元格?这与我的除了(KeyError)
状态有关吗
样本输入数据
@Article{adeniran2016n,
number = {3},
doi = {10.1021/acs.chemmater.5b05020},
}
@Article{blankenship2017cigarette,
doi = {10.1039/C7EE02616A},
}
看起来更好的选择是只使用和。这要简单得多
导入bibtexparser
作为pd进口熊猫
打开(“../bib/small.bib”)作为bibtex\u文件:
bib_数据库=bibtexparser.load(bibtex_文件)
df=pd.DataFrame(bib_database.entries)
选择=df[['doi','number']]
selection.to_csv('temp3.csv',index=False)
改编自