1. 程式人生 > 程式設計 >基於Python獲取docx/doc檔案內容程式碼解析

基於Python獲取docx/doc檔案內容程式碼解析

這篇文章主要介紹了基於Python獲取docx/doc檔案內容程式碼解析,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

整體思路:

下載檔案並修改後綴為zip檔案,解壓zip檔案,所要獲取的內容在固定的資料夾下:work/temp/word/document.xml

所用包,全部是python自帶,不需要額外下載安裝.

# encoding:utf-8
import os
import re
import requests
import zipfile
import xml.dom.minidom

newfile = 'test.docx'


def create(newfile):
  """下載docx檔案,並修改後綴為zip"""
  res = requests.get('https://www.cqjbfy.gov.cn/publiccenter/splc/mb/splc_gginfo.asp?newsid=28949')

  if not os.path.exists(newfile):
    f = open(newfile,'wb')
    for chunk in res.iter_content(100000):
      f.write(chunk)
    f.close()

  os.rename(newfile,'test.zip')  這種方法發現只能解決一部分doc檔案,具體原因不得而知,有明白的歡迎留言
  # 將doc/docx檔案壓縮成zip檔案
  #pf = zipfile.ZipFile('test.zip','w',zipfile.ZIP_STORED) 
  #pf.write(newfile)

def get_txt():
  """解壓zip,並在work/temp/word/document.xml獲取文字內容,進行正則替換標籤等操作"""
  f = zipfile.ZipFile('test.zip','r')
  for file in f.namelist():
    f.extract(file,"temp/")
  
  f = xml.dom.minidom.parse('./temp/word/document.xml')
  
  txt = re.sub(r'</w:t></w:r></w:p>','\n',f.toxml())
  print re.sub(r'<.*?>','',txt)

if __name__ == '__main__':
  create(newfile)
  get_txt()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。