Python正则表达式获取电子邮件地址的第一部分

21

我是新手,对Python和正则表达式都不太熟悉。我想知道如何提取电子邮件地址的第一部分,直到域名为止。例如:

s='xjhgjg876896@domain.com'

我希望正则表达式的结果能够考虑到所有可能的电子邮件地址格式,包括数字等等。
xjhgjg876896

我了解正则表达式的概念-即我知道需要扫描到“@”并存储结果-但我不确定如何在Python中实现它。
谢谢您的时间。

你是否_需要_使用正则表达式来完成这个任务(例如作为作业或其他什么)?还是你只是猜测没有其他方法可以完成这个任务? - abarnert
1
如果你确实需要使用正则表达式,你就必须先阅读一些关于它们以及 Python 的“re”模块的教程。如果我只是说“使用're.match('^(.*?)@',s)'”,那么你也不知道如何使用返回的内容,如何调试或扩展它等等,那还有什么意义呢? - abarnert
你是否也想解析这些有效的电子邮件地址:Tony Snow <tony@example.com>(tony snow) tony@example.com?你想从tony%example.com@example.org返回什么?当前电子邮件地址格式的标准在这里:http://www.rfc-editor.org/rfc/rfc5322.txt。 - Robᵩ
如果您需要解析完整的电子邮件地址,而不仅仅是这种简单形式,那么您绝对不想使用正则表达式。请参阅标准库及其相关内容中的email.utils.parseaddr,或者在PyPI上搜索第三方库(如果某些原因不适用)。正确获取所有细节非常困难。这正是Python自带电池的原因。 - abarnert
14个回答

0

已经有了很好的答案,但我还是想贡献我的想法。

  • 如果我的电子邮件是john@gmail.com,我只想获取“john”。

    我想要的只是“john”

  • 如果我的电子邮件是john.joe@gmail.com,我只想获取“john”。

    我想要的只是“john”

所以这就是我所做的:

name = recipient.split("@")[0]
name = name.split(".")[0]
print name

干杯


0

你也可以尝试使用email_split。

from email_split import email_split
email = email_split('xjhgjg876896@domain.com')
email.local  # xjhgjg876896
email.domain  # domain.com

你可以在这里找到更多信息 https://pypi.org/project/email_split/。祝你好运 :)


0
希望这能有所帮助:
def get_email_name(self, email):
    return self.email.split("@")[0]

def get_email_domain(self, email):
    return self.email.split("@")[1]

-1
你可以在电子邮件中找到所有单词,然后返回第一个单词。
import re
def returnUserName(email):
    return re.findall("\w*",email)[0]

print(returnUserName("johns123.ss@google.com"))   #Output is - johns123
print(returnUserName('xjhgjg876896@domain.com'))  #Output is - xjhgjg876896

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接