美文网首页Zotero常用软件神器
From Scopus2Histocite,用histocite

From Scopus2Histocite,用histocite

作者: leoatchina | 来源:发表于2016-01-02 20:45 被阅读471次
    • 个人工作中,经常会有这样的情况:从一篇或者几篇文章出发,找出这个“领域”中被“引用”比较多,“开山祖师”级别文献,作文献二次检索是比较容易想到的思路
    • 二次检索可以用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

    相关文章

      网友评论

      • 9fcc385874d9:点击了没反应,我的是win10系统,是系统问题还是我安装的python版本不对?亦或是ris的文件不对?
        41e3a49d539b:@DrHouse的瘸腿 搞定了,为了用这个SCOPUS的引文分析,今天刚安装python,发现语句居然读得懂的样子。问题不是出在是否以管理员运行,运行后报错是因为我安装是3.*版,而作者写语句用的是2.*版,因为2到3语句有些许出入,改了print(),还是报错,syntax error: invaild syntax ,所以我这种小白只好选择卸载3后安装2。然后继续报错 AttributeError: 'module' object has no attribute 'mkdir'。因为知道mkdir是新建的语句,所以按照作者指导自己建了C:\fakepath.于是成功了。没有python经验,确实走了点弯路。不过也让我初见了python这个神器。
        41e3a49d539b:@lc461184174 请问您是怎么解决的,我是win 7,点击会弹出一个框,但并未生成所需文件。py文件也无法右键调出以管理员身份运行。
        9fcc385874d9:我解决了,是管理员权限问题
      • hiall21:你好,这样转换之后,还是没法用histcite进行被引分析, local citation score LCR 全部为0.
        请问有什么办法可以解决吗?
        c61fd275cec3:@lc461184174 是啊,参考文献的格式不一样,没法用起来。。。。全是0
        9fcc385874d9:@DrHouse的瘸腿 我比较了一下scopus转换的文本和WOS的文本,参考文献的格式不一样,不知道是不是因为这个
        41e3a49d539b:您好!出现了跟您一样的问题,请问解决了吗?是否因为语句替换规则已经过时,无法使用?
      • Specter119:用histocite,最好给C:\fakepath做个软链接,方便备份。
        Specter119:@leo陶 嗯,那是最好的,因为做系统C很容易就格式化了。
        leoatchina: @specter119 是softlink到云盘吧

      本文标题:From Scopus2Histocite,用histocite

      本文链接:https://www.haomeiwen.com/subject/xqhghttx.html