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.
50 lines
1.5 KiB
50 lines
1.5 KiB
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'].lower() == it['title'].lower() and item['ENTRYTYPE'] == it['ENTRYTYPE'] or item['ID'] == it['ID']:
|
|
it = it.update(item)
|
|
print(item['title'].lower())
|
|
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)
|
|
|