我是python和regex的新手,我想知道如何提取电子邮件地址的第一部分到域名。例如,如果:
s='xjhgjg876896@domain.com'
我希望正则表达式的结果是(考虑到电子邮件ID的所有“种类”,包括数字等...):
xjhgjg876896
我理解正则表达式 - 就像我知道我需要扫描到“@”然后存储结果 - 但我不确定如何在python中实现它。
感谢您的时间。
答案 0 :(得分:36)
您应该只使用split
字符串方法:
s.split("@")[0]
答案 1 :(得分:4)
正如其他人所指出的,更好的解决方案是使用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>
类型的电子邮件,则需要调整正则表达式。
答案 2 :(得分:0)
几个月前写了EmailExtractor.py。您可能想尝试一下并根据需要进行修改。它提取电子邮件地址。您可以使用“@”(推荐)拆分输出或修改正则表达式。
答案 3 :(得分:0)
已经回答了很好的答案,但我还想把它放进去。
如果我有一封电子邮件john@gmail.com我想得到的只是&#34; john&#34;。
我只想得到&#34; john&#34;
如果我有一封电子邮件john.joe@gmail.com我想得到的只是&#34; john&#34;
我只想得到&#34; john&#34;
所以这就是我所做的:
name = recipient.split("@")[0]
name = name.split(".")[0]
print name
欢呼声
答案 4 :(得分:0)
#!/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
答案 5 :(得分: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/中找到更多内容。祝你好运:)
答案 6 :(得分:0)
您不应使用正则表达式或split
。
local, at, domain = 'john.smith@example.org'.rpartition('@')
答案 7 :(得分:0)
这是使用索引方法的另一种方法。
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
答案 8 :(得分:0)
需要安装包 pip 安装 email_split
from email_split import email_split
email = email_split("ssss@ggh.com")
print(email.domain)
print(email.local)
答案 9 :(得分:-1)
下面应该可以帮到你:
fromAddr = message.get('From').split('@')[1].rstrip('>')
fromAddr = fromAddr.split(' ')[0]