- 个人工作中,经常会有这样的情况:从一篇或者几篇文章出发,找出这个“领域”中被“引用”比较多,“开山祖师”级别文献,作文献二次检索是比较容易想到的思路
- 二次检索可以用scopus网站,不过怎么找出“二次检索”之后,哪些文献比较重要呢?很容易想到有类似功能的Histocite,感谢罗昭锋的博客等老师的大力推广,我在多年前就已经使用过这个软件进行文献检索。
- 经过观察 scopus的导出格式和 histcite的导入格式,发现其实hisctcite所需要的信息在scopus里都有,但是要经过一系列的加工,把无用的信息给去除,还要进行一系列的关键字代替。
-
替换的步骤和内容做成了思维导图,纯手工操作比较麻烦
fromScopus2Histocite - 现在已经写好了python代码,使用里把从scopus网站上下载下来的scopus.ris文件和scopus2HistCite.py文件放到同一个目录下,运行这个py文件,就可以在c:\fakepath下面生成savedrecs.txt文件
- github地址:https://github.com/leoatchina/Scopus2Histcite
- 代码:
#coding:utf-8
import re,sys,re,os
def Scopus2HistCite():
try:
AuStart=False
RfStart=False
LT=['TI','T2','AU','VL','IS','SP','EP','PY','DO']
if not os.path.isdir('C:/fakepath'):
os.path.mkdir('C:/fakepath')
Scopus=open('./Scopus.ris','r')
HistCite=open('C:/fakepath/savedrecs.txt','wb+')
HistCite.write('FN Thomson Reuters Web of Knowledge™\nVR 1.0\n')
for line in Scopus.readlines():
line=line.replace(r' - ',' ')
BG=line[:2]
if RfStart:
if BG=='ER':
HistCite.write('ER\n\n')
AuStart=False
RfStart=False
else:
HistCite.write(line)
elif line[:14]=='N1 References:':
RfStart=True
HistCite.write(line.replace(line[:14],'CR'))
elif BG in LT:
line=line.replace(r'TI ','PT J\nTI ').replace(r'T2 ',r'SO ').replace(r'SP ',r'BP ')
if not AuStart and BG=='AU':
AuStart=True
else:
line=line.replace(r'AU ','')
HistCite.write(line)
HistCite.write('\nEF')
Scopus.close()
HistCite.close()
print "finished"
except Exception, e:
raise e
if __name__ == '__main__':
Scopus2HistCite()
- 这程序只能在windows下面运行, 如果碰到权限问题,请手动在c盘下面建立fakepath文件
- 导出scopus文件时有两个注意点
1.要换成英文版scopus
Switch to English
2.导出时,要选择ris格式,要注意把References选上。
Paste_Image.png
网友评论
请问有什么办法可以解决吗?