将正则表达式与 Tika 在 python 中读取的 pdf 中的文本字符串一起使用 - 尝试查找以 \\ 结尾的行



我扫描了许多页面的文档,使用OCR使它们机器可读,然后使用Python 3中的Tika包阅读它们,该包返回一个我标记为"全文"的冗长凌乱的字符串。我正在尝试返回与此模式匹配的所有文本:

事件描述: (

呸呸呸呸呸呸呸呸呸�作为参考,这就是我要捕获的段落的样子:

事件描述: 学生确实哗啦。学生bla bla bla bla bla。呸��\\!I \.\'=fll BLABLA \SCHOOL \\'1 \是学生bla和/或bla吗?是的哦 否~ lfyes,附上报告。\如果发生事件,是否在 24 小时内通知了家长/监护人?是:1/否: r:J·\是嘭嘭嘭是的,Noif \CC: \District Qt\'" 。/Parent/Guardian\'EJ therO \h[t/I lf Date \(pis\, 1.-1 Date \\学生姓名:

它始终以"事件描述"开头,以"\学生"结尾。所以我不想捕获中间显示"\\!"的部分。

我试过这个:

desc = re.findall("Description of Incident:+.nnnn", fulltext)
print(desc)

但我得到一个空列表。

但是,如果我这样做:

desc = re.findall("Description of Incident:+.", fulltext)

然后我得到一个多次重复['事件描述:"]

的列表如果我这样做:

desc = re.findall("nnnn", fulltext)

然后我确实多次得到 ['\\']

最后,如果我这样做:

desc = re.findall("Description of Incident:.+n.+", fulltext)

然后我得到段落的一部分,但只到第二个。 示例:['事件描述:学生确实唠叨。学生 ']

使用转义字符无济于事。

尝试在 DOT ALL 模式下运行查找所有搜索,并稍微改变您的模式:

desc = re.findall("Description of Incident:.*?nnnn(?=Student\b)", fulltext, re.DOTALL)

这似乎有效,至少对于您的示例输入数据。 请注意,该模式现在说要匹配和使用从跨换行符Description of Incident:的所有内容,直到到达第一个nnnn然后是(但确实包括)文本Student

相关内容

  • 没有找到相关文章

最新更新