Python_用 Python 为毕业论文参考文献排序

人生苦短,我XXXX

其实我也是突发奇想,起因是毕设的参考文献都是英文,学校的指导规范要求参考文献必须以第一作者的首字母排序。e.g.

[1] Alice ...
[2] Bob ...
[3] Charlie ...
Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved

然而下里巴人的我,当时并没有想到用 Endnote(甚至还是保研北大的生信大佬后来提醒我我才知道的 ,因为我当时只是知道有个叫 Endnote 的东西,但根本不知道怎么用)。

那么怎么才能把四十多条参考文献按照首字母排序呢?一条条拿眼睛对?这绝对不符合我的风格,为什么呢,前几天,我还发了个朋友圈,在这里转载一下:

毕设要求的文献格式很迷,目测是 GB/T 7714,然而我所有的文献都是之前按 之前投 BMC 时魔改的。
如果一个一个复制文献标题去百度学术搜然后再手动导出符合要求的文献格式显然不符合我的风格,
更别提正文中的引用也要相应由我之前的“[xxx]”改为学校要求的“(xxx et al. 2016)”。
Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved
所以直接开元素审查,基本摸清了百度学术的页面结构。
然后开 postman 稍微测试了下,摸清了内部 API。
反正最后 beautifulsoup 加上写了几个正则,把 request URL一拼接,得到的大致效果就是输入论文标题
文件如图1,爬虫输出如图2的符合标准的带编号的文献格式(第一行)
以及能在正文中直接使用的引用格式(第二行)。

在这里插入图片描述
图1 输入
在这里插入图片描述
图2 输出,注:图中 et al 应为斜体

具体这块的实现,暂时按下不表,我的目的是说明自己很懒,能程序实现的绝不手动。

而今天的主角是这部分工作做完几天后的我才发现需要做的文献排序问题。

其实说穿了,就一行sort代码。读文件加 3 行,写文件加 3 行,6 行搞定。但是,省出来的可是实打实的时间。Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved

具体实现

输入:文本文件 ref_sort,每一行为一字符串

输出:文本文件 ref_sorted,每一行为排序好后的一个字符串

代码:

# Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved
f=open('ref_sort', 'r')
refList=f.readlines()
f.close()
# print(sorted(refList))
f=open('ref_sorted','w')
f.writelines(sorted(refList))
f.close()

输出:

Alice...
Bob...
Charlie...

增加需求,要求输出带有参考文献顺序标号

代码:

# Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved
f=open('ref_sort', 'r')
refList=f.readlines()
f.close()
j=0
f=open('ref_sorted','w')
for i in sorted(refList): 
    j=j+1
    print([j], i)
    ref_line='['+str(j)+']'+i
    f.writelines(ref_line)
f.close()

输出:

[1] Alice...
[2] Bob...
[3] Charlie...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章