You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.4 KiB
49 lines
1.4 KiB
3 years ago
|
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)
|