【问题标题】:Is there a way to parse an email address that's not separated from the rest of the text?有没有办法解析没有与文本的其余部分分开的电子邮件地址?
【发布时间】:2021-03-01 21:14:40
【问题描述】:

我正在做一个练习,我必须创建一个程序,该程序接受剪贴板副本的输入,解析其内容,并返回其中包含的电子邮件地址列表(在非 Python 意义上)。

所述输入的源文件是具有以下布局的示例公共领域 PDF:


它看起来很简单,除非我正常复制/粘贴该输入(即不使用我的程序),我得到以下输出:

Kasey Mcbridemcbrid17@gmail.com939-537-1879Long Cohencohe1696@yahoo.com905-523-5311Hunter Waltonhwalton3@hotmail.com975-675-8521Jacques Deanjacquesd@att.net515-420-4722Nicky Clevelandncleveland88@mac.com57

您知道问题出在哪里:姓氏固定在电子邮件地址的开头,因此我的程序无法正确解析地址。

是否有一种方法(正则表达式或其他方式)在解析过程中以某种方式将它们分开,或者除了手动执行或重新格式化文件之外别无他法?

到目前为止,我的正则表达式如下所示:

email_regex = re.compile(r'''

[a-zA-Z0-9_.+]+             # name part

@                           # @

[a-zA-Z0-9_.+]+\.\w{2,3}    # domain name part

''', re.VERBOSE)

【问题讨论】:

  • 恐怕正则表达式无济于事,您的电子邮件用户名没有遵循任何通用模式 wrt 名称。
  • 有没有办法自动将"Kasey Mcbridemcbrid17@gmail.com" 变成"mcbrid17@gmail.com"?不,没有,算了。但是,一个可以读取 PDF 结构 的工具,而不是试图剖析复制和粘贴造成的混乱,你可能会有更多的运气。例如,试一试pdfminer,看看它对您的文件有多大帮助 (see)。
  • 你可能想看看这篇文章:stackoverflow.com/questions/55139685/…
  • 这能回答你的问题吗? how to extract email from pdf

标签: python-3.x regex email


【解决方案1】:

模式

sample = 'Kasey Mcbridemcbrid17@gmail.com939-537-1879Long Cohencohe1696@yahoo.com905-523-5311Hunter Waltonhwalton3@hotmail.com975-675-8521Jacques Deanjacquesd@att.net515-420-4722Nicky Clevelandncleveland88@mac.com573-286-5790'

pattern = '(?:([a-zA-Z0-9_.]+)@([a-z]+)\.([a-z]{2,5}))'
result =[{"name": x, "provider": y, "domain": z} for x,y,z in re.findall(pattern, sample)]

输出:

[{'name': 'Mcbridemcbrid17', 'provider': 'gmail', 'domain': 'com'},
{'name': 'Cohencohe1696', 'provider': 'yahoo', 'domain': 'com'},
{'name': 'Waltonhwalton3', 'provider': 'hotmail', 'domain': 'com'},
{'name': 'Deanjacquesd', 'provider': 'att', 'domain': 'net'},
{'name': 'Clevelandncleveland88', 'provider': 'mac', 'domain': 'com'}]

【讨论】:

    猜你喜欢
    • 2015-10-21
    • 1970-01-01
    • 2019-10-01
    • 2019-10-21
    • 2010-10-09
    • 2013-04-06
    • 1970-01-01
    • 2023-03-26
    • 2021-05-16
    相关资源
    最近更新 更多