【问题标题】:How to extract questions from a word doc with Python using regex如何使用 Python 使用正则表达式从 word doc 中提取问题
【发布时间】:2019-08-12 15:08:22
【问题描述】:

我正在使用 docx 库从 word doc 中读取文件,我正在尝试使用正则表达式搜索和匹配仅提取问题。我找到了无限的方法,但我不断收到“TypeError”。

我要提取的数据是这样的:

我的经济援助会支付住房费用吗?
校外住宿 - 经济援助适用于您的学费和
费用后,任何剩余资金将作为退款发送给您,该退款将
直接存入(可以通过您的
帐户设置)或作为纸质支票邮寄给您。然后,您可以使用
退款来支付租金。重要的是要注意,当租金到期时,可能
无法获得经济援助,因此请确保在
地方制定支付租金的计划。我的经济援助会支付住房费用吗?
“财务”“帮助”“房子”
资金“大学橡树”
"钱" "chisho"
“支付”“小伙子”
“授予”“月桂树”
获得房间和补助金的要求是​​什么?
我如何支付我的住房费用?
我如何支付住房费用?

如果还有一种更简单的方法可以将单词 doc 导出到不同类型的文件中,那么很高兴知道反馈。谢谢

我正在使用正则表达式 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 文件

【问题讨论】:

    标签: python regex ms-word python-3.7


    【解决方案1】:

    您的错误:

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

    我相信这条线是问题的原因。 search() 期望一个字符串作为第二个参数,但正在接收一个 Document 对象。

    您应该做的是使用findall() 函数。 search() 只找到模式的第一个匹配项; findall() 找到 所有 匹配项并将它们作为字符串列表返回,每个字符串代表一个匹配项。

    由于您使用的是 docx,因此您必须提取 docx 的内容并将它们用作findall() 方法的第二个参数。如果我没记错的话,这是通过首先提取所有段落,然后提取各个段落的文本来完成的。参考this问题。

    仅供参考,您对简单文本文件执行此操作的方式如下:

    # 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?,例如。只有该句子的第二部分是一个实际问题。所以丢弃任何小写字母。你的正则表达式应该是这样的:

    [A-Z].*\?$
    

    【讨论】:

    • 太棒了,我现在明白我做错了什么。谢谢
    • 您好先生,感谢您的回答,我有一个包含问题及其答案的文档语料库,我的问题类似于这个问题,我有一个机器学习项目,到目前为止我只使用了一个幼稚的完成任务的方法,但我想知道是否有其他方法可以完成,谢谢您的回复。
    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 2021-06-27
    • 2021-07-30
    相关资源
    最近更新 更多