“能想到,就能省出时间” 这是我本文主要表达的目的,不是程序。程序谁都能写。
人生苦短,我XXXX
其实我也是突发奇想,起因是毕设的参考文献都是英文,学校的指导规范要求参考文献必须以第一作者的首字母排序。e.g.
[1] Alice ...
[2] Bob ...
[3] Charlie ...
Copyright © https://zhuanlan.zhihu.com/ysimonguo-research. All Rights Reserved
然而下里巴人的我,当时并没有想到用 Endnote(甚至还是保研北大的生信大佬后来提醒我我才知道的 ,因为我当时只是知道有个叫 Endnote 的东西,但根本不知道怎么用)。
那么怎么才能把四十多条参考文献按照首字母排序呢?一条条拿眼睛对?这绝对不符合我的风格,为什么呢,前几天,我还发了个朋友圈,在这里转载一下:
毕设要求的文献格式很迷,目测是 GB/T 7714,然而我所有的文献都是之前按 之前投 BMC 时魔改的。
如果一个一个复制文献标题去百度学术搜然后再手动导出符合要求的文献格式显然不符合我的风格,
更别提正文中的引用也要相应由我之前的“[xxx]”改为学校要求的“(xxx et al. 2016)”。
Copyright © https://zhuanlan.zhihu.com/ysimonguo-research. All Rights Reserved
所以直接开元素审查,基本摸清了百度学术的页面结构。
然后开 postman 稍微测试了下,摸清了内部 API。
反正最后 beautifulsoup 加上写了几个正则,把 request URL一拼接,得到的大致效果就是输入论文标题
文件如图1,爬虫输出如图2的符合标准的带编号的文献格式(第一行)
以及能在正文中直接使用的引用格式(第二行)。
image.png
<figcaption style="margin-top: 0.66667em; padding: 0px 1em; font-size: 0.9em; line-height: 1.5; text-align: center; color: rgb(153, 153, 153);">图1 输入</figcaption>
image.png<figcaption style="margin-top: 0.66667em; padding: 0px 1em; font-size: 0.9em; line-height: 1.5; text-align: center; color: rgb(153, 153, 153);">图2 输出,注:图中 et al 应为斜体</figcaption>
具体这块的实现,暂时按下不表,我的目的是说明自己很懒,能程序实现的绝不手动。
而今天的主角是这部分工作做完几天后的我才发现需要做的文献排序问题。
其实说穿了,就一行sort
代码。读文件加 3 行,写文件加 3 行,6 行搞定。但是,省出来的可是实打实的时间。
如果有想要学习Python或者正在学习Python中的小伙伴,需要学习资料的话,可以到我的微信公众号:Python学习知识圈,后台回复:“01”,即可拿Python学习资料
具体实现
输入:文本文件 ref_sort,每一行为一字符串
输出:文本文件 ref_sorted,每一行为排序好后的一个字符串
代码:
# Copyright © https://zhuanlan.zhihu.com/ysimonguo-research. 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://zhuanlan.zhihu.com/ysimonguo-research. 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...
网友评论