[英]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.