主頁 > 知識(shí)庫(kù) > Python中docx2txt庫(kù)的使用說明

Python中docx2txt庫(kù)的使用說明

熱門標(biāo)簽:鄭州智能外呼系統(tǒng)中心 賓館能在百度地圖標(biāo)注嗎 汕頭電商外呼系統(tǒng)供應(yīng)商 電銷機(jī)器人 金倫通信 400電話 申請(qǐng) 條件 北京外呼電銷機(jī)器人招商 crm電銷機(jī)器人 南京crm外呼系統(tǒng)排名 云南地圖標(biāo)注

docx2txt的Github地址

docx2txt是基于python的從docx文件中提取文本和圖片的庫(kù)。

代碼是從python-docx中獲取的。它也可以從頁眉,頁腳和超鏈接中提取文本。它現(xiàn)在也可以提取圖像。

安裝

pip install docx2txt

運(yùn)行

1、命令行運(yùn)行

# extract text
docx2txt file.docx
# extract text and images
docx2txt -i /tmp/img_dir file.docx

2、在python中調(diào)用

# extract text
docx2txt file.docx
# extract text and images
docx2txt -i /tmp/img_dir file.docx

補(bǔ)充:python docx提取word中的目錄及文本框中的文本

問題描述

python docx提取word中的目錄及文本框中的文本

解決方案

因未在docx庫(kù)找到直接識(shí)別word中目錄及文本框中文本的方法,所以采用了一個(gè)“笨”方法,docx庫(kù)可以把word文檔解析成xml格式,以解析xml的方式查找目錄及文本框中文本,具體做法:

迭代出文檔的所有element,其中目錄的tag為“std”,找到它后提出他的所有文本即為目錄文本;文本框的tag 為“textbox”,找到它后還要繼續(xù)下鉆尋找tag為 'r'的element,提取其文本則為文本框中文本。

# 提取word目錄
file = docx.Document(file_path)
children = file.element.body.iter()
child_iters = []
for child in children:
 # 通過類型判斷目錄
 if child.tag.endswith('main}sdt'):
  for ci in child.iter():
   if ci.text and ci.text.strip():
    child_iters.append(ci)
catalog = [ci.text for ci in child_iters]
# 提取word文本框中文本
file = docx.Document(file_path)
children = file.element.body.iter()
child_iters = []
for child in children:
 # 通過類型判斷目錄
 if child.tag.endswith('textbox'):
  for ci in child.iter():
   if ci.tag.endswith('main}r'):
    child_iters.append(ci)
textbox = [ci.text for ci in child_iters]

文本域的標(biāo)簽,第一次找的是AlternateContent,后來發(fā)現(xiàn)對(duì)有些文本域失效;第二次又找到了pict,基本覆蓋了測(cè)試的所有文本域;第三次把word文檔的標(biāo)簽都找出來看了一下,發(fā)現(xiàn)textbox這個(gè)標(biāo)簽看著更靠譜,用它測(cè)試了一下,也能覆蓋所有的測(cè)試文本域,決定就選擇這個(gè)標(biāo)簽。

提取文本后,又有了新需求,提取的文本很多都不成句,呈短語或單詞的形式,需要把提取的文本還原成段落形式:

file = docx.Document(file_path)
children = file.element.body.iter()
child_iters = []
tags = []
for child in children:
 # 通過類型判斷目錄
 if child.tag.endswith(('AlternateContent','textbox')):
  for ci in child.iter():
   tags.append(ci.tag)
   if ci.tag.endswith(('main}r', 'main}pPr')):
    child_iters.append(ci)
text = ['']
for ci in child_iters :
 if ci.tag.endswith('main}pPr'):
  text.append('')
 else:
  text[-1] += ci.text
 ci.text = ''
trans_text = ['***'+t+'***' for t in text]
print(trans_text)
i, k = 0, 0
for ci in child_iters :
 if ci.tag.endswith('main}pPr'):
  i += 1
  k = 0
 elif k == 0:
  ci.text = trans_text[i]
  k = 1
file.save('E:/***/test.docx')

把標(biāo)簽pPr當(dāng)做換行標(biāo)志, 把提取的文本每段前后都加了“***”后又寫回文檔中。

注:這里又發(fā)現(xiàn)AlternateContent這個(gè)標(biāo)簽必須要帶上,否則可以提取文本域內(nèi)的文字,但改變文字寫回去保存word不顯示更改后的文字。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 安裝python-docx后,無法在pycharm中導(dǎo)入的解決方案
  • Python安裝docx依賴包教程
  • Python-docx 實(shí)現(xiàn)整體修改或者部分修改文字的大小和字體類型
  • 使用Python docx修改word關(guān)鍵詞顏色的操作
  • python docx的超鏈接網(wǎng)址和鏈接文本操作
  • 詳解用 python-docx 創(chuàng)建浮動(dòng)圖片
  • python 實(shí)現(xiàn)docx與doc文件的互相轉(zhuǎn)換

標(biāo)簽:昆明 石家莊 梅州 浙江 懷化 文山 西寧 錫林郭勒盟

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python中docx2txt庫(kù)的使用說明》,本文關(guān)鍵詞  Python,中,docx2txt,庫(kù),的,使用說明,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python中docx2txt庫(kù)的使用說明》相關(guān)的同類信息!
  • 本頁收集關(guān)于Python中docx2txt庫(kù)的使用說明的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章