我对 python 和正则表达式很陌生,我想知道如何将电子邮件地址的第一部分提取到域名。例如,如果:
s='xjhgjg876896@domain.com'
我希望正则表达式结果是(考虑到所有“种类”的电子邮件 ID,即包括数字等):
xjhgjg876896
我得到了正则表达式的想法——因为我知道我需要扫描到“@”然后存储结果——但我不确定如何在 python 中实现它。
谢谢你的时间。
您应该只使用split
字符串的方法:
s.split("@")[0]
正如其他人指出的那样,更好的解决方案是使用split
.
如果您真的热衷于使用,regex
那么这应该可以:
import re
regexStr = r'^([^@]+)@[^@]+$'
emailStr = 'foo@bar.baz'
matchobj = re.search(regexStr, emailStr)
if not matchobj is None:
print matchobj.group(1)
else:
print "Did not match"
它打印出来
foo
注意:这仅适用于SOMEONE@SOMETHING.TLD
. 如果要匹配类型的电子邮件,NAME<SOMEONE@SOMETHING.TLD>
则需要调整正则表达式。
您不应该使用正则表达式或split
.
local, at, domain = 'john.smith@example.org'.rpartition('@')
#!/usr/bin/python3.6
def email_splitter(email):
username = email.split('@')[0]
domain = email.split('@')[1]
domain_name = domain.split('.')[0]
domain_type = domain.split('.')[1]
print('Username : ', username)
print('Domain : ', domain_name)
print('Type : ', domain_type)
email_splitter('foo.goo@bar.com')
输出 :
Username : foo.goo
Domain : bar
Type : com
这是另一种方法,使用索引方法。
s='xjhgjg876896@domain.com'
# Now lets find the location of the "@" sign
index = s.index("@")
# Next lets get the string starting from the begining up to the location of the "@" sign.
s_id = s[:index]
print(s_id)
输出是
xjhgjg876896
需要安装包 pip install email_split
from email_split import email_split
email = email_split("ssss@ggh.com")
print(email.domain)
print(email.local)
几个月前写了EmailExtractor.py。您可能想尝试一下并根据需要对其进行修改。它提取电子邮件地址。您可以使用“@”(推荐)拆分输出或修改正则表达式。
下面应该可以帮助你做到这一点:
fromAddr = message.get('From').split('@')[1].rstrip('>')
fromAddr = fromAddr.split(' ')[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/。祝你好运 :)
好的答案已经得到了回答,但我还是想把我的。
如果我有一封电子邮件 john@gmail.com,我只想得到“john”。
我只想得到“约翰”
如果我有一封电子邮件 john.joe@gmail.com 我只想得到“john”
我只想得到“约翰”
所以这就是我所做的:
name = recipient.split("@")[0]
name = name.split(".")[0]
print name
干杯
您可以找到电子邮件中的所有单词,然后返回第一个单词。
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