如何用python整理附件

來源:互聯網
上載者:User
本篇文章給大家整理了關於如何用python整理附件的相關知識點,學習python的朋友可以跟著測試下。

目前我的檔案夾中有500多份簡曆,如果我想知道一些資訊,比如學校,學曆之類的,我需要開啟每一份word去查看,太耗時間了。這個時候python需要出馬了。

目標

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

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

具體實現

有了目標,就具體說說如何?的,整理思路還是比較簡單的,就是遍曆所有的word檔案,將word中關鍵的資訊擷取到並儲存到excel中。

這裡列下主要用到的模組:

import xlsxwriterimport subprocessimport osimport docximport sysimport 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還是減少了一定的重複勞動,但面對一些不標準的東東貌似還沒有很好的方式。

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

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

相關推薦;

使用Python快速搭建HTTP服務和檔案分享權限設定服務

使用Python監控檔案內容變化代碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.