import bibtexparser as bp from bibtexparser.bparser import BibTexParser from bibtexparser.customization import convert_to_unicode bibdata=[] list=[] while True: filename=input("用于合并的bib文件路径(按回车结束输入):") if(filename==""):break #filename='/home/tmn07/Desktop/DeepM.bib' # /home/tmn07/Desktop/DeepM.bib # /home/tmn07/Desktop/citations_Neves2002Topology.bib with open(filename, encoding='UTF-8') as bibfile: parser = BibTexParser(common_strings=True) # 声明解析器类 parser.customization = convert_to_unicode # 将BibTeX编码强制转换为UTF编码 bibdata = bp.load(bibfile, parser) # 通过bp.load()加载 for item in bibdata.entries: flag=1 for it in list: if item['title']==it['title'] and item['ENTRYTYPE']==it['ENTRYTYPE']: it=it.update(item) flag=0 break if flag==1:list.append(item) #print(list) filename=input('保存结果的文件路径:') #filename='/home/tmn07/Desktop/result.bib' # /home/tmn07/Desktop/result.bib bibdata.entries=list with open(filename,'w') as bibfile: from bibtexparser.bwriter import BibTexWriter writer = BibTexWriter() writer.contents = ['entries'] writer.indent = ' ' writer.order_entries_by = ('id') e = bp.dumps(bibdata, writer) bibfile.write(e)