latex-bib文件参考文献去重
目录
latex bib文件参考文献去重
使用latex写文章时,会使用bib文件存储参考文献,有时会出现参考文献重复的情况,需要去重,可以使用如下代码:
import json
import re
class DuplicateCheck:
def __init__(self):
self.bib_path = '/path/to/XXX.bib' # 要去重的bib文件路径
self.data = ''
self.dict = {} # key=title, value=cite
self.repeat = ''
def open_bib(self):
with open(self.bib_path, 'r', encoding='UTF-8') as f:
self.data = f.read().split('@')
print(self.data[1]) # 测试
# for line in f:
# print(line)
def check(self):
length = len(self.data)
for i in range(1, length):
strs = re.split(r'{|,|}', self.data[i])
# print(str)
# 寻找Title
for j in range(len(strs)):
if 'title' in strs[j] and 'booktitle' not in strs[j]:
if strs[j+1] in self.dict.keys():
r = f'{strs[j+1]}此文献重复!!!!!!!!!!!!!!!!!!\n它的索引{self.dict[strs[j+1]]}\n\n'
print(r)
self.repeat += r
else:
self.dict[strs[j+1]] = strs[1]
def save(self):
ref = json.dumps(self.dict, indent=4, ensure_ascii=False, sort_keys=True)
with open('ref.json', 'w', encoding='UTF-8') as f:
f.write(ref)
with open('ref_repeat.txt', 'w', encoding='UTF-8') as f:
f.write(self.repeat)
# 按装订区域中的绿色按钮以运行脚本。
if __name__ == '__main__':
check = DuplicateCheck()
check.open_bib()
check.check()
check.save()
给定要去重的bib文件路径
/path/to/XXX.bib
,运行代码后,在当前路径下得到
ref.json
文件,展示了所有参考文献信息,还有
ref_repeat.txt
,展示了重复的参考文献。