预答辩的时候尤平老师说你们几个要注意一下,不要有重复文献。
于是打算查一下,200多个文献,总不能一条一条的查吧。果断想到了Python:
参考文献格式(文献.txt):
[1] SEMENZA G L. Life with Oxygen[J]. Science, 2007, 318(5847): 62–64.
[2] 王建枝, 钱睿哲. 病理生理学[M]. 人民卫生出版社, 2018.
[3] MYLONIS I, SIMOS G, PARASKEVA E. Hypoxia-Inducible Factors and the Regulation of Lipid Metabolism[J]. Cells, 2019, 8(3): 214.
[4] WILSON W R, HAY M P. Targeting hypoxia in cancer therapy[J]. Nature Reviews Cancer, 2011, 11(6): 393–410.
基本思路是只保留作者名,然后比较重复的作者。
import re
with open("文献.txt", "r", encoding = "utf-8") as f:
FirstName = []
for vLine in f.readlines():
try:
# 将序号清除掉
vLineRemoveId = vLine.replace(re.search("\[[\d]*?\]\t", vLine, re.S).group(0), "");
# 将作者名之外的内容清除
vLineRemovedOther = vLineRemoveId.replace(re.search("\.[\d\D]*", vLineRemoveId, re.S).group(0), "")
except:
continue
FirstName.append(vLineRemovedOther)
vDoubleNames = []
for vName in sorted(FirstName):
# 和新列表比较,如果在新列表中就说明重复了,将其打印出来
if vName.replace(re.search("[\d]*", vName, re.S).group(0), "") in vDoubleNames:
print(vName)
# 如果不在新列表中,则说明第一次出现,将其添加进新列表中
else:
vDoubleNames.append(vName)
运行后输出结果为:
BARTUZI P, BILLADEAU D D, FAVIER R, et al
DALY N L, SCANLON M J, DJORDJEVIC J T, et al
FURUTA E, PAI S K, ZHAN R, et al
MUNIR R, LISEC J, SWINNEN J V, et al
SEMENZA G L
SVENSSON R U, PARKER S J, EICHNER L J, et al
SWINNEN J V, BRUSSELMANS K, VERHOEVEN G
李晓晨, 王廷正
李晓晨, 王廷正
李金钢, 何建平, 王廷正
李金钢, 王廷正
王茁
王镜岩, 朱圣庚, 徐长法
把这些名字拿到论文中搜索发现中文的这几个都没有重复,是因为相同的人引了多篇文章。英文名字中,除SEMENZA G L都是重复文献,在zotero中看了一下,是因为我重复将文献收进了不同的目录,导致插入文献的时候被重复编号了。
SEMENZA G L的查询结果最让我吃惊:
这一看就是个大佬,竟然引了他五篇文献,去年诺奖就是研究低氧的,果断去查了一下,不出所料,是其中之一:
好奇心起,查了一下另外两个大佬,结果一篇都没有引= =,等终稿前再看看其它两个人的研究。
等后面有时间了再优化一下,保证筛出来的一定是重复文献。