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...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章