【问题标题】:how to extract email from pdf如何从pdf中提取电子邮件
【发布时间】:2019-08-04 00:00:01
【问题描述】:

我正在尝试使用 pdfminer 和正则表达式从简历中提取电子邮件

from io import StringIO
from pdfminer3.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer3.converter import TextConverter
from pdfminer3.layout import LAParams
from pdfminer3.pdfpage import PDFPage
import re

def get_cv_email(self, cv_path):
    pagenums = set()
    output = StringIO()
    manager = PDFResourceManager()
    converter = TextConverter(manager, output, laparams=LAParams())
    interpreter = PDFPageInterpreter(manager, converter)
    infile = open(cv_path, 'rb')
    for page in PDFPage.get_pages(infile, pagenums):
        interpreter.process_page(page)
    infile.close()
    converter.close()
    text = output.getvalue()
    output.close()
    match = re.search(r'[\w\.-]+@[\w\.-]+', text)
    email = match.group(0)
    return email

大多数简历的电子邮件已成功提取,但始终无法正常工作

示例:jayantanathcdh@gmail.comEducationalQualification

更新:如果电子邮件以大写字母开头,我如何编辑我的正则表达式以忽略电子邮件之后的内容

【问题讨论】:

  • 此答案可能会帮助您重新表述问题:stackoverflow.com/a/11453831/3564632。当然,您必须确定您期望的电子邮件的策略,可能可以定义您想要支持的所有域的列表并支持该列表。或者,如果您想要更多通用解决方案,您必须真正保持最新列表的更新。我想我链接的那个答案应该提供足够的许可
  • 我们可以假设在每封电子邮件之后都有一个非单词或大写单词吗?这是真的吗?
  • 所以这意味着“不”,除非您想要一个“在大多数情况下”有效的解决方案:-)
  • 实际上我用超过 143 份简历测试了这个程序,只有一份出现了这个错误。如果电子邮件以大写字母开头,我如何编辑我的正则表达式以忽略电子邮件之后的内容?
  • @AmineMessaoudi 我根据您的上一条评论发布了答案

标签: python regex email pdfminer


【解决方案1】:

试试这个:\w+(?:[.-]\w+)*@\w+(?:[.-]\w+)+[.-][a-z_0-9]+(?=[A-Z]|(?!=[.-])\b)

只要电子邮件的最后一部分是小写的,它就应该可以工作。它将匹配,直到后面跟着一个大写字母或单词边界。

此外,正则表达式应该更准确地使用破折号和圆点,从而处理不应该有效的事情,例如 a-.@foo--a 等。

你有一个演示 here

【讨论】:

  • 谢谢!!我同样喜欢它的演示部分。第一次去,这个表达对我来说不是那么容易理解。
【解决方案2】:

根据您最后一条评论来匹配您正在匹配的电子邮件,直到它在@ 之后找到一个大写字母,您可以使用此正则表达式:

[\w\.-]+@[a-z0-9\.-]+

举个例子:

import re
text = "jayantanathcdh@gmail.comEducationalQualification"
match = re.search(r'[\w\.-]+@[a-z0-9\.-]+', text)
email = match.group(0)

print(email)
#jayantanathcdh@gmail.com

【讨论】:

  • 它有效。但是,如果在电子邮件之后有一个新行,并且在该行之后有一个以大写开头的单词,那会发生什么?只需要电子邮件吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 2016-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多