91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用python整理附件

發布時間:2020-09-28 12:26:18 來源:腳本之家 閱讀:144 作者:Bug生活2048 欄目:開發技術

目前我的文件夾中有500多份簡歷,如果我想知道一些信息,比如學校,學歷之類的,我需要打開每一份word去查看,太耗時間了。這個時候python需要出馬了。

目標

目前類似截圖中的word有600+,想簡單的進行整理:

如何用python整理附件

可以整理出一份excel用于導航(類似目錄),可以通過excel來快速定位到所要的附件,如下圖效果:

如何用python整理附件

具體實現

有了目標,就具體說說如何實現的,整理思路還是比較簡單的,就是遍歷所有的word文件,將word中關鍵的信息獲取到并保存到excel中。

這里列下主要用到的模塊:

import xlsxwriter
import subprocess
import os
import docx
import sys
import re

xlsxwriter主要用來操作excel,xlsxwriter只能用來寫,效率上比xlwt要高,數據量不多,用xlwt也ok。

subprocess主要用來調用命令行,因為docx模塊無法解析doc的word文件,所以在解析前將doc的文件轉換成docx文件。

os主要用于遍歷文件夾獲取文件。

docx主要用來解析word文檔。

規范下文件名

首先我們先規范下文件名稱,因為在使用subprocess.call調用命令時,空格,特殊符號之類的沒辦法轉義導致報錯,所以干脆在之前就清理掉這個潛在問題。

def remove_doc_special_tag():
  for filename in os.listdir(path):
    otherName = re.sub("[\s+\!\/_,$%^*(+\"\')]+|[+——()?【】“”!,。?、~@#¥%……&*()]+", "",filename) 
    os.rename(os.path.join(path,filename),os.path.join(path,otherName))

遍歷文件

之后我們就可以開始正題,遍歷每個文件進行解析:

path='/Users/cavin/Desktop/files'
for filename in os.listdir(path):
  ...具體邏輯...

這里碰到一個問題,首先是docx模塊無法解析doc的word文檔,由于又是使用的mac,所以也無法使用win32com模塊,這個問題就比較尷尬,后來google發現可以通過命令將doc轉換成docx。

這里注意下轉換后的docx文件樣式是丟失的,但這不影響我獲取文本信息。

于是就有了這段代碼,如果是doc的文件,優先轉換成docx,待解析完之后再移除掉。

if filename.endswith('.doc'):
  subprocess.call('textutil -convert docx {0}'.format(fullname),shell=True)
  fullname=fullname[:-4]+".docx"
  sheetModel= etl_word_files(fullname)#解析文本邏輯
  subprocess.call('rm {0}'.format(fullname),shell=True) #移除轉換的文件

解析word文件

接下來就是解析文件了,通過docx模塊很容易實現,具體的解析邏輯就不貼了,就是遍歷每一行,根據一些關鍵字,符號來截取數據(每個簡歷格式基本上差不多的)

doc = docx.Document(fullname)
for para in doc.paragraphs:
  print(para.text)
  ...具體解析邏輯...

填充excel

解析完的數據就可以直接填充excel了:

workbook = xlsxwriter.Workbook('report_list.xlsx')
worksheet = workbook.add_worksheet('list')
worksheet.write(0,0, '序號') 
worksheet.write(0,1, '姓名') 
worksheet.write(0,2, '性別') 
worksheet.write(0,3, '年齡') 
worksheet.write(0,4, '籍貫') 
worksheet.write(0,5, '目前所在地') 
worksheet.write(0,6, '學歷')
worksheet.write(0,7, '學校')
worksheet.write(0,8, '公司')
worksheet.write(0,9, '職位')
worksheet.write(0,10, '文檔鏈接')

這里主要說下文檔鏈接的填充,由于是要給其他人的,只要保證附件和excel在同一個文件夾下,采用相對路徑的方式來實現,可以使用Excel的函數HYPERLINK:

worksheet.write(index,10, '=HYPERLINK(\"./'+filename+'\",\"附件\")')

問題點

到這里,基本上可以實現相應的功能了,但不是很完美,主要是word中的格式不標準,沒有很好的方式去準確獲取到我要的數據,但主要的姓名學校之類的大多數都抓到了,也算減輕點任務啦。

總結

利用python還是減少了一定的重復勞動,但面對一些不標準的東東貌似還沒有很好的方式。

雖然可以增加邏輯來兼容這些不標準,但顯然這個付出和產出就有點不成正比了。

利用好手上的工具去提高效率才是真的,至于是傻瓜式的重復工作,還是通過代碼來減少重復勞動,就看你自己怎么看啦。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

仁怀市| 克山县| 文成县| 彭阳县| 井陉县| 交口县| 唐海县| 清水河县| 油尖旺区| 峨眉山市| 天台县| 景东| 高台县| 南城县| 肥乡县| 金川县| 瓦房店市| 龙陵县| 日土县| 玉田县| 浮梁县| 凤山县| 张北县| 霍州市| 广宗县| 西安市| 柞水县| 开平市| 聊城市| 常宁市| 南汇区| 井陉县| 化隆| 新源县| 民勤县| 罗平县| 丹江口市| 永城市| 河西区| 永川市| 梅河口市|