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