導航:首頁 > 編程語言 > pythondocx中文

pythondocx中文

發布時間:2023-09-20 22:59:35

Ⅰ 利用python將docx文件轉為txt

背景:工作中需要將文件夾下的若干word文.docx轉換為對應txt文本格式

因此需要將docx中文本讀取出來,然後保存為txt格式即可

需要的python模廳伏塊為 python-docx : https://python-docx.readthedocs.io/en/latest/index.html, 導入模塊時候導入docx

(只能讀取.docx文件,不能讀取.doc文件)

注意,在PyPi里還有一個叫docx的庫,已經停止更新,不建議使用)

http://www.cnblogs.com/geek-arking/p/9300617.html

上面的方法只能讀取docx文件,如果讀取doc會報錯

結果報錯:docx.opc.exceptions.PackageNotFoundError: Package not found。還是無法識別doc

「改變拓展名並沒有改變其編碼方式,因此無法讀取文本內容,需將doc文件用word另存為docx後再用python-docx讀取其內容」

對於要轉換的doc文件,網上的資料都是使用win32,需要安裝 pypiwin32

https://www.cnblogs.com/AlgorithmDot/p/3386918.html

通過上面的方法,有時可以塵陸直接將doc轉換為txt文件,有時候會報錯。

這里我們可以考慮將doc文件直接轉換為docx然後再通過上面的方法讀取為txt,如果手動將doc修改為txt或者docx,打開文件會顯示亂碼,但是可以用其提供的SaveAs方法將.doc文檔利用手動的方式「另存為」.docx文檔,就能夠成功打開轉化後的.docx文檔,

doc.SaveAs(tmp +'.docx', 16)

其中16的含義如下:

利用win32com介面直接調用office API,好處是簡單、兼容性好,只要office能處理的,python都可以處理,處理出來的結果和office word裡面「另存為」一扮兄攜致。

下面是office 2007支持的全部文件格式對應表:

wdFormatDocument = 0 

wdFormatDocument97 = 0 

wdFormatDocumentDefault = 16 

wdFormatDOSText = 4 

wdFormatDOSTextLineBreaks = 5 

wdFormatEncodedText = 7 

wdFormatFilteredHTML = 10 

wdFormatFlatXML = 19 

wdFormatFlatXMLMacroEnabled = 20 

wdFormatFlatXMLTemplate = 21 

= 22 

wdFormatHTML = 8 

wdFormatPDF = 17 

wdFormatRTF = 6 

wdFormatTemplate = 1 

wdFormatTemplate97 = 1 

wdFormatText = 2 

wdFormatTextLineBreaks = 3 

wdFormatUnicodeText = 7 

wdFormatWebArchive = 9 

wdFormatXML = 11 

wdFormatXMLDocument = 12 

= 13 

wdFormatXMLTemplate = 14 

= 15 

wdFormatXPS = 18

照著字面意思應該能對應到相應的文件格式。

1、新建或打開文件。這個比較簡單用docx的Document類,若指定路徑則是打開文檔;若沒有指定路徑則是新建文檔

2、保存文件。有打開,就有保存。用Document類的save方法,其中參數是保存的文件路徑,或者要保存的文件流。一般指定路徑即可。

doc.save(path_or_stream)

3、對象集合。python-docx包含了word文檔的相關對象集合。

4、插入段落。段落是word最基本的對象之一。

5、新增樣式。這個幫助文檔裡面說得不仔細,而且還是英文的。我手頭上的項目用到這個,就自己琢磨出怎麼使用,如下。

6、應用字元樣式。字元自然是在段落裡面的,可以採用下面方法給段落追加文字和設置字元樣式。

#插入一個空白段落

p = doc.add_paragraph('')

p.add_run('123', style="Heading 1 Char")

p.add_run('456')

p.add_run('789', style="Heading 2 Char")

#這樣一個段落就應用了兩個字元樣式,中間「456」就沒應用樣式

printp.text#輸出結果是u'123456789' 也還是連續的

7、設置字體。當然可以不用通過設置樣式對某些字進行設置,也可以直接設置。

p = doc.add_paragraph('')

r = p.add_run('123')

r.font.bold =True#加粗

r.font.italic =True#傾斜 等等...

8、表格操作。表格也是經常用到的一種對象類型。

Ⅱ python-docx官方文檔中文

沒有找到。
第一個:
http://python-docx.readthedocs.io/en/latest/api/table.html#id1
和http://python-docx.readthedocs.io/en/latest/api/document.html#id1
有tables返回。
第二個:
用re來解決,\d{4}\D\d{1,2}\D\d{1,2}\D ,這些匹配到的就是日期,替換成你要的。

Ⅲ Python Word文檔處理 上篇:python-docx

某天我收到一個需求:希望能夠用python對word文檔進行一些處理,比如更換一些文字以及添加批註。

簡單搜索後,我發現 python-docx 是一個處理docx文檔的常用python庫,因此我打算用它來進行進一步開發。

官方文檔 提供了一個簡單的示例

python-docx 將文檔抽象為document對象、paragraph對象以及run對象,提供了圍繞這些對象進行簡單處理的API

然而在文檔中並沒有出現關於批註操作的部分,我在搜尋 一些文章 後發現了在某個 issue 中提及了添加批註相關信息,然而還是沒有得到具體的解決辦法

docx文檔底層是由XML文件組成的

我們可以將一個 xx.docx 文件的後綴名改為 .rar 然後將其手動解壓,可以得到下面這些文件

在諸多文件當中主要用到的是 document.xml 文件,這里保存了文檔的內容

打開一份 document.xml 文件,拋開header、footer、table以及其他特殊項,去掉樣式等修飾項,一份樸素的docx文檔主要可以分為三個部分:paragraph、run、text

paragraph即段落,就是我們在word當中看到的一段。text即文本,就是真實的內容。run比較抽象,我們可以將其理解為片段,即語句的切分。

為了更好地理解run是什麼,打開一篇word文檔定位其中一句話

讓我們看看這篇文檔解壓之後的 document.xml 文件中對應的部分

OK,我們可以看到原本完整的一句話在word中被拆分成了許多個 <w:r> 標簽,這就是 run ,word切分 run 的規則很多,有的根據標點符號,有的根據中文分詞,句子中如果存在不同樣式的字詞也會單獨切分出來,因此我們很難預估一句話究竟會被分成幾個片段。

在issue中搜索comment關鍵字發現在一個 merge request 上已經給出了添加批註的解決方案,可以通過 paragraph 對象上的 add_comment 方法給一個段落添加批註

但這還是不符合我的需求,我的目標是精準添加到某個詞或者短語上

打開 這個貢獻者的源碼 進行研究

其實就是在P標簽內插入comment標簽引用,同時添加comment標簽到xx文件

同理我們可以在r標簽內插入comment標簽引用,同時添加comment標簽到xx文件,這樣就能實現給特定詞添加批註的需求了

閱讀全文

與pythondocx中文相關的資料

熱點內容
python滲透入門到精通 瀏覽:270
如何真機調試安卓進程 瀏覽:737
農行app怎麼交公共維修基金 瀏覽:665
python中字典增加元素 瀏覽:238
伺服器端渲染的數據怎麼爬 瀏覽:163
壓縮空氣噴射器 瀏覽:488
python提高效率 瀏覽:796
華為文件管理怎麼樣輸入解壓碼 瀏覽:800
深思加密狗初始化 瀏覽:566
黃金崩潰pdf 瀏覽:309
華為特定簡訊息加密 瀏覽:375
微機原理與單片機技術李精華答案 瀏覽:816
pic12c508單片機 瀏覽:309
androidgps調用 瀏覽:226
金文編pdf 瀏覽:445
14乘87減147的簡便演算法 瀏覽:473
怎麼創建edu文件夾 瀏覽:721
演算法的基礎問題 瀏覽:256
蘋果手機怎麼選擇app支付 瀏覽:856
訪問加密伺服器失敗怎麼回事 瀏覽:439