python 讀取各類文件格式的文本信息:doc,html,mht,excel

引言
眾所周知,python最強大的地方在于挺举,python社區(qū)匯總擁有豐富的第三方庫捐名,開源的特性,使得有越來越多的技術(shù)開發(fā)者來完善

python的完美性谜嫉。

未來人工智能萎坷,大數(shù)據(jù)方向,區(qū)塊鏈的識別和進(jìn)階都將以python為中心來展開沐兰。

咳咳咳哆档! 好像有點打廣告的嫌疑了。

當(dāng)前互聯(lián)網(wǎng)信息共享時代住闯,最重要的是什么?是數(shù)據(jù)瓜浸。最有價值的是什么?是數(shù)據(jù)比原。最能直觀體現(xiàn)技術(shù)水平的是什么?還是數(shù)據(jù)插佛。

所以,今天我們要分享的是:如何來獲取各個文件格式的文本信息量窘。

普通文件的格式 一般分為: txt普通文本信息雇寇,doc word文檔,html網(wǎng)頁內(nèi)容蚌铜,excel表格數(shù)據(jù)谢床,以及特殊的mht文件。

一厘线,python處理html網(wǎng)頁信息。
html類型的文本數(shù)據(jù)出革,內(nèi)容是由前端代碼書寫的標(biāo)簽+文本數(shù)據(jù)的格式造壮,可以直接在chrome瀏覽器打開,清楚 的展示出文本的格式骂束。

python 獲取html文件的內(nèi)容和獲取txt文件的方法相同耳璧,直接打開文件讀取就可以了。

讀取代碼如下:

with open(html_path, "r", encoding="utf-8") as f:
file = f.read()
1
2
file 是html文件的文本內(nèi)容展箱。是一個網(wǎng)頁標(biāo)簽的格式內(nèi)容旨枯。

二,python處理excel表格信息混驰。
python擁有直接操作excel表格的第三方庫xlwt,xlrd攀隔。調(diào)用對應(yīng)的方法就可以讀寫excel表格數(shù)據(jù)皂贩。

讀取excel操作代碼如下:

    filepath = "C:\\Users\Administrator\Desktop\新建文件夾\笨笨 前程6份 武漢.xls"
    sheet_name = "UserList"
    rb = xlrd.open_workbook(filepath)

    sheet = rb.sheet_by_name(sheet_name)

    # clox_list = [0, 9, 14, 15, 17]
    for row in range(1, sheet.nrows):
        w = WriteToExcel()
        # for clox in clox_list:
        name = sheet.cell(row, 0).value
        phone = sheet.cell(row, 15).value
        address = sheet.cell(row, 9).value
        major = sheet.cell(row, 14).value
        age = sheet.cell(row, 8).value

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
其中row是表格數(shù)據(jù)對應(yīng)的行數(shù), cell獲取具體行數(shù)昆汹,列數(shù)的具體數(shù)據(jù)明刷。

三,python讀取doc文檔數(shù)據(jù)满粗。
python讀取doc文檔是最麻煩的辈末。處理邏輯復(fù)雜。處理的方式也有很多種映皆。

python 沒有直接處理doc文檔的第三方庫挤聘,但是有一個處理docx的第三方庫⊥背梗可以通過將doc文件轉(zhuǎn)換為docx文件组去,再調(diào)用第三方python庫pydocx來讀取doc文檔的內(nèi)容。

這里需要注意的是,不要直接修改doc的后綴來修改成docx文件沟饥。直接通過修改后綴獲取的docx文件添怔,pydocx無法讀取內(nèi)容。

我們可以使用另外一個庫來修改doc為docx贤旷。

具體代碼如下:

def doSaveAas(self, doc_path):
"""
將doc文檔轉(zhuǎn)換為docx文檔

    :rtype: object
    """

    docx_path = doc_path.replace("doc", "docx")
    word = wc.Dispatch('Word.Application')
    doc = word.Documents.Open(doc_path)  # 目標(biāo)路徑下的文件
    doc.SaveAs(docx_path, 12, False, "", True, "", False, False, False, False)  # 轉(zhuǎn)化后路徑下的文件
    doc.Close()
    word.Quit()

1
2
3
4
5
6
7
8
9
10
11
12
13
代碼所需的包接口:

python處理docx文檔的方法有很多種广料,具體使用情況,根據(jù)個人需求來決定幼驶。

No.1 解壓docx文件艾杏。
docx文件的原理,本質(zhì)上就是一個壓縮的zip文件盅藻,通過解壓以后购桑,就可以獲取原來文件的各個內(nèi)容。

docx解壓后的文件結(jié)構(gòu)如下:

docx文件的文本內(nèi)容存儲結(jié)構(gòu)如下:

文本內(nèi)容存儲于word/document.xml文件中氏淑。

第一種方法勃蜘,我們就可以先將docx還原成zip壓縮文件,再解壓zip文件假残,讀取word/document.xml文件的內(nèi)容就ok了缭贡。

具體操作代碼如下:

def get_content(self):
"""
獲取docx文檔的文本內(nèi)容
:rtype: object
"""
os.chdir(r"C:\Users\Administrator\Desktop\新建文件夾") # 改變目錄到文件的目錄
#
os.rename("51 2014.09.12 1份Savannah.docx", "51 2014.09.12 1份Savannah.ZIP") # 重命名為zip文件

    f = zipfile.ZipFile('51 2014.09.12 1份Savannah.ZIP', 'r')  # 進(jìn)行解壓

    xml = f.read("word/document.xml")

    wordObj = BeautifulSoup(xml.decode("utf-8"))
    # print(wordObj)
    texts = wordObj.findAll("w:t")
    content = []
    for text in texts:
        content.append(text.text)
    content_str = "".join(content)
    return content_str

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
最后獲取到的就是docx文檔的所有文本數(shù)據(jù)了。

No.2 將docx文檔轉(zhuǎn)換成python能夠處理的文本格式辉懒。
第一種方法阳惹,是依據(jù)docx文檔的原理來獲取數(shù)據(jù),流程有點繁瑣,有沒有能直接讀取docx文檔內(nèi)容的方法呢眶俩?答案莹汤,肯定是沒有的,別想了颠印,洗洗回家睡吧纲岭。

直接讀取docx文檔的方法沒有抹竹,有沒有能夠?qū)ocx文檔轉(zhuǎn)換成python能夠輕松處理的文本格式呢?

這個可以有荒勇,前面說了柒莉,python擁有大量豐富的第三方庫(先夸一波我大python),歷經(jīng)千辛萬苦終于找到了,一個能轉(zhuǎn)換docx文檔格式的第三方庫,pydocx,pydocx庫中有個方法pydocx.to_html()就可以直接將docx文檔轉(zhuǎn)換為html文件沽翔,怎么樣兢孝?意不意外,驚喜不驚喜仅偎!

第二種方法跨蟹,轉(zhuǎn)換文本格式的代碼如下:

def docx_to_html(self, docx_path):
    """
    docx文檔轉(zhuǎn)換成html響應(yīng)
    :rtype: object
    """
    # docx_path = "C:\\Users\Administrator\Desktop\新建文件夾\\51 2014.09.12 1份Savannah.docx"
    response = PyDocX.to_html(docx_path)

1
2
3
4
5
6
7
獲取到的response是html文件內(nèi)容。

四橘沥,python處理mht文件窗轩。
mht文件是一種只能在IE瀏覽器上展示的文本格式,在chrome瀏覽器中打開是一堆的亂碼座咆。

No.1 偽造IE請求mht文件內(nèi)容
最基礎(chǔ)的讀取mht文本的方法就是偽造IE瀏覽器請求痢艺。

調(diào)用requests庫,發(fā)送get請求網(wǎng)頁鏈接介陶,構(gòu)造IE的請求頭信息堤舒。

理論上來說,這種方法是可行的哺呜。但是呢舌缤,不建議用,原因大家都懂得某残。

No.2 轉(zhuǎn)換文件格式
好了說正經(jīng)的方法国撵,猜測mht文件能否修改成其他文件格式來直接讀取呢?

docx,不行玻墅;html介牙,不行;excel澳厢,更不用說了耻瑟。

真相只有一個!I退帧!

直接修改后綴得到的docx谆构,無法讀取裸扶。

so,我們想到的方法是什么呢。沒錯搬素,就是修改成doc文檔呵晨。

方法是匪夷所思的魏保,但也是靈感一現(xiàn)。

mht可以直接通過修改后綴轉(zhuǎn)換成doc文檔摸屠,doc文檔讀取文本內(nèi)容的方法具體參考上面讀取doc文檔的方法谓罗。

如何獲取html文本的內(nèi)容?
html文本的內(nèi)容是網(wǎng)頁結(jié)構(gòu)標(biāo)簽數(shù)據(jù)季二,取出文本的方式是:re正則檩咱,或者xpath。

后續(xù)胯舷,小伙伴有需要的話刻蚯,會再開一章詳細(xì)了解re,xapth的使用規(guī)則。

如果有問題的話桑嘶,也可以隨時留言炊汹,感謝觀看!逃顶!

作者:Faker2.0
來源:CSDN
原文:https://blog.csdn.net/mygodit/article/details/90515039
版權(quán)聲明:本文為博主原創(chuàng)文章讨便,轉(zhuǎn)載請附上博文鏈接!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末以政,一起剝皮案震驚了整個濱河市霸褒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌妙蔗,老刑警劉巖傲霸,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異眉反,居然都是意外死亡昙啄,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門寸五,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梳凛,“玉大人,你說我怎么就攤上這事梳杏∪途埽” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵十性,是天一觀的道長叛溢。 經(jīng)常有香客問我,道長劲适,這世上最難降的妖魔是什么楷掉? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮霞势,結(jié)果婚禮上烹植,老公的妹妹穿的比我還像新娘斑鸦。我一直安慰自己,他們只是感情好草雕,可當(dāng)我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布巷屿。 她就那樣靜靜地躺著,像睡著了一般墩虹。 火紅的嫁衣襯著肌膚如雪嘱巾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天败晴,我揣著相機與錄音浓冒,去河邊找鬼。 笑死尖坤,一個胖子當(dāng)著我的面吹牛稳懒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播慢味,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼场梆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了纯路?” 一聲冷哼從身側(cè)響起或油,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎驰唬,沒想到半個月后顶岸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡叫编,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年辖佣,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搓逾。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡卷谈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出霞篡,到底是詐尸還是另有隱情世蔗,我是刑警寧澤,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布朗兵,位于F島的核電站污淋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏余掖。R本人自食惡果不足惜寸爆,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧而昨,春花似錦、人聲如沸找田。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽墩衙。三九已至务嫡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間漆改,已是汗流浹背心铃。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挫剑,地道東北人去扣。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像樊破,于是被迫代替她去往敵國和親愉棱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容