成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

利用Python好好的整理你的附件

cyrils / 3353人閱讀

摘要:主要用來調(diào)用命令行,因?yàn)槟K無法解析的文件,所以在解析前將的文件轉(zhuǎn)換成文件。主要用于遍歷文件夾獲取文件??偨Y(jié)利用還是減少了一定的重復(fù)勞動(dòng),但面對(duì)一些不標(biāo)準(zhǔn)的東東貌似還沒有很好的方式。

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

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

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

具體實(shí)現(xiàn)

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

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

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

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

subprocess主要用來調(diào)用命令行,因?yàn)?b>docx模塊無法解析doc的word文件,所以在解析前將doc的文件轉(zhuǎn)換成docx文件。

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

docx主要用來解析word文檔。

規(guī)范下文件名

首先我們先規(guī)范下文件名稱,因?yàn)樵谑褂?b>subprocess.call調(diào)用命令時(shí),空格,特殊符號(hào)之類的沒辦法轉(zhuǎn)義導(dǎo)致報(bào)錯(cuò),所以干脆在之前就清理掉這個(gè)潛在問題。

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))
遍歷文件

之后我們就可以開始正題,遍歷每個(gè)文件進(jìn)行解析:

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

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

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

于是就有了這段代碼,如果是doc的文件,優(yōu)先轉(zhuǎn)換成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) #移除轉(zhuǎn)換的文件
解析word文件

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

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

解析完的數(shù)據(jù)就可以直接填充excel了:

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

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

worksheet.write(index,10, "=HYPERLINK("./"+filename+"","附件")")
問題點(diǎn)

到這里,基本上可以實(shí)現(xiàn)相應(yīng)的功能了,但不是很完美,主要是word中的格式不標(biāo)準(zhǔn),沒有很好的方式去準(zhǔn)確獲取到我要的數(shù)據(jù),但主要的姓名學(xué)校之類的大多數(shù)都抓到了,也算減輕點(diǎn)任務(wù)啦。

總結(jié)

利用python還是減少了一定的重復(fù)勞動(dòng),但面對(duì)一些不標(biāo)準(zhǔn)的東東貌似還沒有很好的方式。

雖然可以增加邏輯來兼容這些不標(biāo)準(zhǔn),但顯然這個(gè)付出和產(chǎn)出就有點(diǎn)不成正比了。

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41707.html

相關(guān)文章

  • 利用Python自動(dòng)發(fā)送郵件

    摘要:自動(dòng)發(fā)送郵件我們把報(bào)表做出來以后一般都是需要發(fā)給別人查看,對(duì)于一些每天需要發(fā)的報(bào)表或者是需要一次發(fā)送多份的報(bào)表,這個(gè)時(shí)候可以考慮借助來自動(dòng)發(fā)送郵件。一份郵件的組成下圖是中發(fā)送一份郵件的界面,主要包含發(fā)件人收件人抄送人主題正文附件這幾部分。 ...

    leo108 評(píng)論0 收藏0
  • python發(fā)送郵件

    摘要:參數(shù)分別表示主機(jī)和端口。注意也可以在參數(shù)中指定端口號(hào)如,這樣就沒必要給出參數(shù)。當(dāng)需要發(fā)送附件的時(shí)候使用的就是這個(gè)類的一個(gè)子類。主要用來發(fā)送圖片普通文本郵件文本對(duì)象,其中是郵件內(nèi)容,郵件類型,可以是普通文本郵件,郵件編碼,可以是等等。 python發(fā)送郵件 準(zhǔn)備 python中發(fā)送郵件主要用的是smtplib和email兩個(gè)模塊,下面主要對(duì)這兩個(gè)模塊進(jìn)行講解 在講解之前需要準(zhǔn)備至少兩個(gè)...

    mengera88 評(píng)論0 收藏0
  • 首次公開,整理12年積累博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0
  • 「碼個(gè)蛋」2017年200篇精選干貨集合

    摘要:讓你收獲滿滿碼個(gè)蛋從年月日推送第篇文章一年過去了已累積推文近篇文章,本文為年度精選,共計(jì)篇,按照類別整理便于讀者主題閱讀。本篇文章是今年的最后一篇技術(shù)文章,為了讓大家在家也能好好學(xué)習(xí),特此花了幾個(gè)小時(shí)整理了這些文章。 showImg(https://segmentfault.com/img/remote/1460000013241596); 讓你收獲滿滿! 碼個(gè)蛋從2017年02月20...

    wangtdgoodluck 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<