簡體   English   中英

這是我的函數還是docx中的缺陷.Python中的文檔

[英]Is this a flaw in my function or of docx.Document in Python

我正在使用docx.Document提取docx文件中的一些突出顯示的文本/單詞,但是由於提取的某些單詞被分成幾部分,所以結果非常明確,例如:

['sniffle', 'irritations', 'enzymes', 'abrasive', 'immunoglobulins', 'histamine', 'leukotriene', 'predisposition', 'an', 'aphylaxis', 'syndrome', 'angioedema', 'contact', 'dermatitis', 'frightening', 'tingling', 'eczema', 'nausea', 'wheezing', 'anaphylaxis', 'lump', 'epinephrine', 'venom sac', 'scrape', 'ointment', 'hydrocortisone', 'calamine', 'loose-fitting', 'swatting', 'birch', 'fact sheet', 'urticarial', 'A', 'ngioedema']

“一個”,“過敏”實際上來自一個詞“過敏”,“ A”,“神經性水腫”實際上來自一個詞“血管性水腫”

我沒有以錯誤的方式突出顯示這兩個詞,比如先突出顯示“ A”,然后突出顯示“ ngioedema”,這是荒謬的。

邏輯很簡單:打開docx->使用段落/游程遍歷文本->將突出顯示的單詞保存在列表中

def preProcess(filepath):
    document = docx.Document(filepath)
    for para in document.paragraphs:
        for run in para.runs:
            if run.font.highlight_color == WD_COLOR_INDEX.YELLOW:
                keyText.append((run.text.lstrip()).rstrip())
                for key in keyText:
                    if '' in keyText:
                        keyText.remove('')
    extractWdFrmDocx(keyText)

顯然,在提取時,一個單詞不能被打斷

段落中的文本可以在任意點處分成多個行,並且跨越多個行的單個單詞很常見。 因此,不能保證在字邊界處發生游程。 如果要提取突出顯示的單詞,則需要一種更復雜的方法。

一種方法是將paragraph.text拆分為單詞,以便您還可以知道運行中每個單詞的第一個字符的起始偏移量。 然后,您可以遍歷運行以標識突出顯示的運行,並累積每次運行開始的偏移量。

您將需要一些巧妙的邏輯來識別哪些單詞在突出顯示的行中,但是提到的所有信息都應該是您要做的。

因此,對於帶有文本“突出顯示的單詞”的段落,您的單詞偏移量將是:

(0, "a"), (2, "highlighted"), (14, "word")

並且您突出顯示的行程(偏移,長度)對可能是:

(2, 4), (6, 7)

據此,您可以計算出(2, highlighted)的第一個字符被突出顯示,並且突出顯示在單詞的其余部分是連續的。

您可能可以簡化邏輯,以選擇突出顯示第一個字符的任何整個單詞,而不必擔心根據需要從單詞中間開始的運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM