用python从pdf文件中提取论文名称并自动保存

2019-11-08  本文已影响0人  东南亚求导王

保研之后,有一些闲,就陪着女朋友去她导师(我大哥!虽然他老欺负我)那里提前熟悉环境,哈哈哈!

碰巧女朋友师兄下载了16年和17年的AP的论文,但是都是没有改名字的,全是一堆编号,所以手动改名字的任务就交给了我女朋友和另一个刚保研的小伙伴。

改这玩意儿太费劲了,光论文就5GB多,手动改了几篇之后,想了想应该py大法好解决一点。本人不太会python,只会依葫芦画瓢,轻喷......

思路很简单:

找出文件夹里面的所有pdf文件的路径,然后利用pdfminer这个库,扣出pdf中的大概率是title的三行,拼接,That's all!

不过其中有几个需要注意的:

*提取PDF前4,5,6行拼接,可能会多出后面的作者,也有可能题目少两个单词

*由于其中有些字符不能在命名中使用,如:/<>:?*均使用空格替代

*如果文章title没有居中置顶那就。。。手动调吧

*由于有些论文顶上是有communication的所以需要把它匹配掉


看那里有个communication

但是有些文章题目里本身又有communication。。。
所以我就在前面加了个

]

然后把

]communication

一起匹配扔掉,最后再把其他多余的

]

去掉,有一点脱裤子放屁,但是我只能想到这个办法了,对不起太菜了。。。

大家还是看代码吧。。。

# -*- coding:utf-8 -*-
import os
import re
from urllib.request import urlopen
from pdfminer.pdfinterp import PDFResourceManager,process_pdf
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from io import StringIO
from io import open
def readPDF(pdffile):
   rsrcmgr=PDFResourceManager()
   retstr=StringIO()
   laparams=LAParams()
   device=TextConverter(rsrcmgr,retstr,laparams=laparams)
   process_pdf(rsrcmgr,device,pdffile)
   device.close()
   content=retstr.getvalue()
   retstr.close()
   strs = str(content).split("\n")
   title = strs[4]+strs[5]+strs[6]
   return title 

if __name__ == "__main__":
   rootdir = '/Users/nightwish/Desktop/part1' #文件夹路径,不知道的就把文件拖进终端看下
   list = os.listdir(rootdir)  # 列出文件夹下所有的目录与文件
   for i in range(0, len(list)):
       path= os.path.join(rootdir, list[i])
       if path!=rootdir+'/.DS_Store': #苹果系统需要注意,如果没有会报错
           pdffile=open(path,"rb")
           title =']'+readPDF(pdffile)
           print(title) 
           rstr = r"[\/\\\:\*\?\"\<\>\|]" #正则匹配去除不可命名字符
           title = re.sub(rstr, " ", title)
           title =title.replace(']Communications','')
           new_title=title.replace(']', '')#去除前面的communication
           print(new_title)
           os.rename(path, os.path.join(rootdir, new_title+".pdf"))
           pdffile.close()

接下来就让它自己超级变变变

嘤嘤嘤 手动忽略黑夜中的手指

最后,再放一张改好的图吧


故曰:人生苦短,我用python

就酱,祝大家玩得开心!

上一篇下一篇

猜你喜欢

热点阅读