如何从pd中提取电子邮件

2024-09-26 22:42:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用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

大部分简历的邮件都被成功地提取出来了,但并不是一直都能正常工作

示例:jayannathanthcdh@gmail.com教育资格认证在

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


Tags: fromimportcloseoutput电子邮件emailpagemanager
2条回答

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

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

此外,regex应该更精确地使用破折号和圆点,从而处理不应该有效的内容,如a-.@foo a

你有一个演示here

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

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

举个例子:

^{pr2}$

相关问题 更多 >

    热门问题