2012-03-05 35 views
3

私はテキスト(単語)が強調表示されている(色コード(黄色、青色、灰色など)を使用している)各色に関連する強調表示された単語を抽出する。私はPythonでプログラミングしています。私が現在行っていることは次のとおりです。[python-docx][1]で文書を開き、文書内にトークン(単語)を含む<w:r>タグを取得しました。今、私はそれが<w:highlight>タグを持っており、それから、カラーコードを抽出し、それが<w:t>タグ内の黄色のプリントテキストに一致する場合ならば、私は各単語のチェック部分で立ち往生していますPythonのWord文書(.docx)からハイライトされた単語を抽出する

#!/usr/bin/env python2.6 
# -*- coding: ascii -*- 
from docx import * 
document = opendocx('test.docx') 
words = document.xpath('//w:r', namespaces=document.nsmap) 
for word in words: 
    print word 

:私は、次のコードを使用しています。誰かが解析されたファイルから単語を抽出することを私に指摘できるかどうか本当に感謝します。

答えて

4

私がこれまでにないpython-docxで働いていたが、何助けたことは、私はオンラインのようなテキストlooklsの強調表示部分のどのXML構造のスニペットを見つけたことだった:それは比較的簡単だった、そこから

<w:r> 
    <w:rPr> 
     <w:highlight w:val="yellow"/> 
    </w:rPr> 
    <w:t>text that is highlighted</w:t> 
    </w:r> 

これを考え出すには:

from docx import * 
document = opendocx(r'test.docx') 
words = document.xpath('//w:r', namespaces=document.nsmap) 

WPML_URI = "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}" 
tag_rPr = WPML_URI + 'rPr' 
tag_highlight = WPML_URI + 'highlight' 
tag_val = WPML_URI + 'val' 

for word in words: 
    for rPr in word.findall(tag_rPr): 
     if rPr.find(tag_highlight).attrib[tag_val] == 'yellow': 
      print word.find(tag_t).text 
+0

ありがとう@BioGeek :)それは素晴らしいです! :) –

+0

私はいくつかのマイナーチェンジを行った(tag_tの宣言がなく、utf8文字へのasciiの処理が行われていた)。改訂されたコードはhttps://gist.github.com/1982168で再び利用可能である@BioGeek! –

+0

よろしくお願いいたします。クールな質問だったし、新しいことも学びました。仲間のバイオインフォマティクスからのご挨拶! – BioGeek

関連する問題