首页 > 解决方案 > Python计算PDF文件每一页上的每封电子邮件

问题描述

我正在尝试计算此 pdf 文件中包含 @twitter 或 @facebook 的每个字符串,共有 1537 页。我初始化了一个计数器,每次页面找到@twitter 或@facebook 时都会关闭,但计数器只是计算页面数量,而不是包含 facebook 或 twitter 的电子邮件数量。我正在使用 python 3 并导入 pdftotext 来读取文件。这是代码

import pdftotext
count = 0
# 1 read the pdf
with open('Users.pdf', 'rb') as f:
    pdf = pdftotext.PDF(f)

# loop thru pages
for page in pdf:
    if '@facebook' in page or '@twitter' in page:
        count += 1


print(count)

输出:

1537

这是文件的页数

标签: pythonpython-3.xpdf

解决方案


正如manny所建议的,您应该使用正则表达式匹配来实现您想要做的事情。

import pdftotext
import re

count = 0
# 1 read the pdf
with open('Users.pdf', 'rb') as f:
    pdf = pdftotext.PDF(f)

# regex pattern
pattern = '@facebook|@twitter'

# loop thru pages
for page in pdf:
    count += len(re.findall(pattern, page))

print(count)

要检查并尝试您的正则表达式模式,我推荐Regex101


推荐阅读