Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何让pybtex将缺少的字段读取为NULL,而不是跳过记录?_Python_Bibtex - Fatal编程技术网

Python 如何让pybtex将缺少的字段读取为NULL,而不是跳过记录?

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(使用的是修改后的版本)将记录从.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(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)
改编自