最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何用python整理附件

 更新時(shí)間:2018年05月13日 14:21:09   作者:Bug生活2048  
本篇文章給大家整理了關(guān)于如何用python整理附件的相關(guān)知識(shí)點(diǎn),學(xué)習(xí)python的朋友可以跟著測(cè)試下。

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

目標(biāo)

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

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

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

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

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

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

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

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

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

docx主要用來(lái)解析word文檔。

規(guī)范下文件名

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

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è)問(wèn)題,首先是docx模塊無(wú)法解析doc的word文檔,由于又是使用的mac,所以也無(wú)法使用win32com模塊,這個(gè)問(wèn)題就比較尷尬,后來(lái)google發(fā)現(xiàn)可以通過(guò)命令將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文件

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

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, '文檔鏈接')

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

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

問(wèn)題點(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)的東東貌似還沒有很好的方式。

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

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

相關(guān)文章

  • python程序中斷然后接著中斷代碼繼續(xù)運(yùn)行問(wèn)題

    python程序中斷然后接著中斷代碼繼續(xù)運(yùn)行問(wèn)題

    這篇文章主要介紹了python程序中斷然后接著中斷代碼繼續(xù)運(yùn)行問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python2和python3實(shí)現(xiàn)在圖片上加漢字的方法

    python2和python3實(shí)現(xiàn)在圖片上加漢字的方法

    python2和python3實(shí)現(xiàn)在圖片上加漢字,最主要的區(qū)別還是內(nèi)部編碼方式不一樣導(dǎo)致的,在代碼上表現(xiàn)為些許的差別。這篇文章主要介紹了python2和python3實(shí)現(xiàn)在圖片上加漢字,需要的朋友可以參考下
    2019-08-08
  • Python中命令行參數(shù)argparse模塊的使用

    Python中命令行參數(shù)argparse模塊的使用

    argparse是python自帶的命令行參數(shù)解析包,可以用來(lái)方便的服務(wù)命令行參數(shù)。本文將通過(guò)示例和大家詳細(xì)講講argparse的使用,需要的可以參考一下
    2023-02-02
  • 通過(guò)python爬蟲mechanize庫(kù)爬取本機(jī)ip地址的方法

    通過(guò)python爬蟲mechanize庫(kù)爬取本機(jī)ip地址的方法

    python中的mechanize算是一個(gè)比較古老的庫(kù)了,在python2的時(shí)代中,使用的多一些,在python3以后就很少使用了,現(xiàn)在已經(jīng)是2202年了,可能很多人都沒聽說(shuō)過(guò)mechanize,這不要緊,我們先來(lái)簡(jiǎn)單的講解一下,如何使用mechanize,感興趣的朋友一起看看吧
    2022-08-08
  • Python利用PyQt6開發(fā)一個(gè)全能的任務(wù)管理器

    Python利用PyQt6開發(fā)一個(gè)全能的任務(wù)管理器

    在數(shù)字化辦公時(shí)代,我們每天都要重復(fù)執(zhí)行大量機(jī)械性操作,這些操作不僅浪費(fèi)時(shí)間,還容易因人為疏忽出錯(cuò),所以本文就來(lái)使用PyQt6開發(fā)一個(gè)升級(jí)的自動(dòng)化任務(wù)管理器吧
    2025-04-04
  • Python MySQL數(shù)據(jù)庫(kù)連接池組件pymysqlpool詳解

    Python MySQL數(shù)據(jù)庫(kù)連接池組件pymysqlpool詳解

    這篇文章主要跟大家介紹了關(guān)于Python MySQL數(shù)據(jù)庫(kù)連接池組件pymysqlpool的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-07-07
  • 如何定義TensorFlow輸入節(jié)點(diǎn)

    如何定義TensorFlow輸入節(jié)點(diǎn)

    今天小編就為大家分享一篇如何定義TensorFlow輸入節(jié)點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • pandas 時(shí)間格式轉(zhuǎn)換的實(shí)現(xiàn)

    pandas 時(shí)間格式轉(zhuǎn)換的實(shí)現(xiàn)

    這篇文章主要介紹了pandas 時(shí)間格式轉(zhuǎn)換的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python 常用 PEP8 編碼規(guī)范詳解

    Python 常用 PEP8 編碼規(guī)范詳解

    這篇文章主要介紹了Python 常用 PEP8 編碼規(guī)范詳解的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Django中ORM的基本使用教程

    Django中ORM的基本使用教程

    這篇文章主要給大家介紹了關(guān)于Django中ORM基本使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評(píng)論

鹤山市| 巩留县| 遂溪县| 夹江县| 桑日县| 保山市| 台江县| 惠东县| 凤翔县| 汾西县| 藁城市| 舟曲县| 台北市| 海南省| 台山市| 长兴县| 丰县| 尚义县| 中宁县| 卓尼县| 镇平县| 武陟县| 遂川县| 天津市| 彭水| 静宁县| 阿克苏市| 高台县| 安吉县| 沅陵县| 高平市| 桂林市| 南靖县| 健康| 鹤山市| 香港| 平山县| 东阿县| 晋州市| 四子王旗| 西充县|