2014-03-31 127 views
1

我知道那裏有類似的問題,但我找不到可以回答我的祈禱的東西。我需要的是從MS-Word文件訪問某些數據並將其保存在XML文件中的方法。 閱讀python-docx沒有幫助,因爲它似乎只允許一個人寫入Word文檔,而不是閱讀。 準確地呈現我的任務(或我如何選擇接近我的任務):我想在文檔中搜索關鍵詞或短語(文檔包含表格),並從表格中提取關鍵詞/短語被發現。 有人有什麼想法嗎?如何從Python使用doc/docx文件提取數據

+1

我不得不做類似於xls/xlsx文件的事情,但是這很容易,因爲有openpyxl庫,它允許用戶使用Excel Spreadsheets來做很多事情。但似乎在Python中使用doc/docx文件的支持較少。 –

回答

0

似乎pywin32的伎倆。您可以迭代文檔中的所有表格以及表格內的所有單元格。獲取數據有點棘手(每個條目的最後2個字符必須省略),否則,這是一個10分鐘的代碼。 如果有人需要更多的細節,請在評論中說明。

+0

您是否可以發佈一個簡單的例子代碼來做到這一點? (即,選擇表並將內容讀取到變量,例如)謝謝 – dasen

+0

@dasen [Here](http://stackoverflow.com/questions/31553179/writing-a-pandas-dataframe-to-a-word- document-table-via-pywin32) – dashesy

0

在文檔中搜索與Python,DOCX

# Import the module 
from docx import * 

# Open the .docx file 
document = opendocx('A document.docx') 

# Search returns true if found  
search(document,'your search string') 

你也有一個函數來獲取文檔的文本:

https://github.com/mikemaccana/python-docx/blob/master/docx.py#L910

# Import the module 
from docx import * 

# Open the .docx file 
document = opendocx('A document.docx') 
fullText=getdocumenttext(document) 

使用https://github.com/mikemaccana/python-docx

+0

如果您要使用docx抓取表格中的單元格,請確保您閱讀以避免出現性能問題:https://github.com/python-openxml/python-docx/issues/174 – Soferio

1

docx是一個包含文檔XML的zip文件。您可以打開zip文件,閱讀文檔並使用ElementTree解析數據。

這種技術的優點是你不需要任何額外的Python庫安裝。

import zipfile 
import xml.etree.ElementTree 

WORD_NAMESPACE = '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}' 
PARA = WORD_NAMESPACE + 'p' 
TEXT = WORD_NAMESPACE + 't' 
TABLE = WORD_NAMESPACE + 'tbl' 
ROW = WORD_NAMESPACE + 'tr' 
CELL = WORD_NAMESPACE + 'tc' 

with zipfile.ZipFile('<path to docx file>') as docx: 
    tree = xml.etree.ElementTree.XML(docx.read('word/document.xml')) 

for table in tree.iter(TABLE): 
    for row in table.iter(ROW): 
     for cell in row.iter(CELL): 
      print ''.join(node.text for node in cell.iter(TEXT)) 

看到我的計算器答案How to read contents of an Table in MS-Word file Using Python?更多的細節和引用。

+0

請不要發佈鏈接只回答其他Stack Exchange問​​題。相反,在這裏包括答案的重要部分,並*定製這個具體問題的答案。* – JAL

相關問題