如何用python整理附件

  

目前我的文件夹中有500多份简历,如果我想知道一些信息,比如学校,学历之类的,我需要打开每一份字去查看,太耗时间了。这个时候python需要出马了。
  

  

<强>目标
  

  

目前类似截图中有600 +的词,想简单的进行整理:

  

如何用python整理附件

  

可以整理出一份excel用于导航(类似目录),可以通过excel来快速定位到所要的附件,如下图效果:

  

如何用python整理附件

  

<强>具体实现
  

  

有了目标,就具体说说如何实现的,整理思路还是比较简单的,就是遍历所有的词文件,将词中关键的信息获取到并保存到excel中。

  

这里列下主要用到的模块:

        进口xlsxwriter   导入子流程   进口操作系统   进口多克斯   导入系统   进口re      

xlsxwriter主要用来操作excel, xlsxwriter只能用来写,效率上比xlwt要高,数据量不多,用xlwt也ok。

  

子流程主要用来调用命令行,因多克斯为模块无法解析doc的词文件,所以在解析前将医生的文件转换成多克斯文件。

  

操作系统主要用于遍历文件夹获取文件。

  

多克斯主要用来解析字文档。

  

<>强规范下文件名
  

  

首先我们先规范下文件名称,因为在使用subprocess.call调用命令时,空格,特殊符号之类的没办法转义导致报错,所以干脆在之前就清理掉这个潜在问题。

        def remove_doc_special_tag ():   在os.listdir文件名(路径):   otherName=re.sub (“[\ s + \ ! \/_, $ % ^ *(+ \“\”)] + |[+——() & # 63;【】“!,。, ~ @ #¥%……, *()) +”、“”,文件名)   os.rename (os.path.join(路径,文件名),os.path.join(路径,otherName))      

<>强遍历文件
  

  

之后我们就可以开始正题,遍历每个文件进行解析:

        路径='/用户/cavin/桌面/文件   在os.listdir文件名(路径):   …具体逻辑…      

这里碰到一个问题,首先多克斯是模块无法解析doc的词文档,由于又是使用的mac,所以也无法使用win32com模块,这个问题就比较尴尬,后来谷歌发现可以通过命令将医生转换成多克斯。

  

这里注意下转换后的多克斯文件样式是丢失的,但这不影响我获取文本信息。

  

于是就有了这段代码,如果是医生的文件,优先转换成多克斯,待解析完之后再移除掉。

        如果filename.endswith (. doc):   子流程。调用(“textutil转换多克斯{0}的.format fullname, shell=True)   fullname=fullname [4] +“。docx”   sheetModel=etl_word_files (fullname) #解析文本逻辑   子流程。调用(rm{0}的.format fullname, shell=True) #移除转换的文件      

<>强解析字文件
  

  

接下来就是解析文件了,通过多克斯模块很容易实现,具体的解析逻辑就不贴了,就是遍历每一行,根据一些关键字,符号来截取数据(每个简历格式基本上差不多的)

        医生=docx.Document (fullname)   在doc.paragraphs:帕拉   打印(para.text)   …具体解析逻辑…      

<强>填充excel
  

  

解析完的数据就可以直接填充excel了:

        工作簿=xlsxwriter.Workbook (“report_list.xlsx”)   工作表=workbook.add_worksheet(列表)   工作表。写(0,0,'序号”)   工作表。写(0,1,“姓名”)   工作表。写(0,2,“性别”)   工作表。写(0 3年龄”)   工作表。写(0 4“籍贯”)   工作表。写(0、5、“目前所在地”)   工作表。写(0 6的学历”)   工作表。写(0 7的学校”)   工作表。写(0 8的公司”)   工作表。写(0 9的职位”)   工作表。写(0,10,”文档链接的)      

这里主要说下文档链接的填充,由于是要给其他人的,只要保证附件和excel在同一个文件夹下,采用相对路径的方式来实现,可以使用excel的函数超链接:

        工作表。写(指数10 '=超链接(\”。/+文件名+ \”,\“附件\”)”)      

<强>问题点
  

如何用python整理附件