Jupyter 笔记本中的单元格

时间:2021-02-15 16:00:09

标签: jupyter-notebook

我正在尝试在 Jupyter 笔记本中使用 PyPDF2 解析 pdf。下面是我想如何编写代码的不同部分,即一个单元格中的提取文本语句和一个新单元格中的正则表达式。但是,如果我将两段代码分开如下,则 RegEx 仅通过文件的最后一页而不是整个文件(12 页)。为什么会发生这种情况?我真的很想使用不同的单元格。

import PyPDF2
import re

file = open(r'file.pdf', 'rb')
doc = PyPDF2.PdfFileReader(file)
#print(doc.getNumPages()) 

#新单元格

for i in range(0, 12):
page = doc.getPage(i)
text = page.extractText()
   #print(text)

#新单元格

doc_re = re.compile(r'S\d+_\d+', re.IGNORECASE)
result = doc_re.findall(text)
print(result)

1 个答案:

答案 0 :(得分:0)

每次运行 for 循环时,都会使用 text = page.extractText()

重置文本值

RegEx 会根据您提供的内容运行,即 text。即使您的循环运行超过 12 页,代码的第二个单元格也会收到 text 的最终值(这是您在循环的最后一次迭代中分配给它的任何值)。

您可以将代码从 for 循环内的第二个单元格移动,或者更好的选择是将每个页面的文本添加到文本中。

因此,将 text = 变成 text += 应该可以解决您的问题。