簡體   English   中英

如何使用regex從Python的Word文檔中提取問題

[英]How to extract questions from a word doc with Python using regex

我正在使用docx庫從word doc中讀取文件,我正在嘗試使用正則表達式搜索和匹配僅提取問題。 我找到了實現它的無限方式,但我不斷收到“ TypeError”。

我試圖提取的數據是這樣的:

我的經濟援助會支付住房費用嗎?
校外住宿-在經濟援助適用於您的學費和
費用,剩余的資金將作為退款退還給您
要么直接存入(可以通過您的
帳戶)或作為紙質支票郵寄給您。 然后,您可以使用
退還租金。 請務必注意,經濟援助可能
到期時無法使用,因此請確保有一個計划
支付租金的地方。 我的經濟援助會支付住房費用嗎?
“財務”“幫助”“房屋”
資金“大學橡樹”
“錢”“ chisho”
“支付”“章”
“授予”“月桂樹”
收到房間和補助有什么要求?
我該如何支付房租?
我該如何支付住房費用?

如果還有一種將Word文檔導出到其他類型的文件中的簡便方法,那么很高興獲得反饋。 謝謝

我正在使用正則表達式101,我嘗試了以下正則表達式來僅匹配以問號結尾的句子

".*[?=?]$"
"^(W|w).*[?=?]$"
"^[A-Za-z].*[?=?]$"
import re
import sys
from docx import Document

wordDoc = Document('botDoc.docx')

result = re.search('.*[?=?]$', wordDoc)
print(result)
if result:
    print(result.group(0))
for table in wordDoc.tables:
    for row in table.rows:
        for cell in row.cells:
            print("test")

我希望將匹配的模式保存到目錄中,以便可以將數據導出到csv文件中

您的錯誤:

result = re.search('.*[?=?]$', wordDoc)

我相信這是問題的根源。 search()期望將字符串作為第二個參數,但是正在接收Document對象。

您應該做的是使用findall()函數。 search()僅找到模式的第一個匹配項; findall()查找所有匹配項,並將它們作為字符串列表返回,每個字符串代表一個匹配項。

由於使用的是docx,因此必須提取docx的內容,並將其用作findall()方法的第二個參數。 如果我沒記錯的話,可以先提取所有段落,然后提取各個段落的文本來完成。 請參閱問題。

僅供參考,對簡單文本文件的處理方式如下:

# Open file
f = open('test.txt', 'r')
# Feed the file text into findall(); it returns a list of all the found strings
strings = re.findall(r'your pattern', f.read())

您的正則表達式:

不幸的是,您的正則表達式不是很正確,因為雖然從邏輯上講,僅匹配以?結尾的句子才有意義? ,其中一場比賽是您place to pay your rent. Will my financial aid pay for housing? place to pay your rent. Will my financial aid pay for housing? , 例如。 該句子的僅第二部分是一個實際的問題。 因此,請丟棄所有小寫字母。 您的正則表達式應類似於:

[A-Z].*\?$

在此處輸入圖片說明

暫無
暫無

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

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