用Python从电子邮件中提取域名(包括几种特殊情况)

用Python从电子邮件中提取域名(包括几种特殊情况),python,regex,python-3.x,Python,Regex,Python 3.x,我正在尝试使用Python从电子邮件字符串中提取域名。对于基本情况,例如abc@xyz.com,以下措施效果良好: string.split("@")[1].rstrip(".com") #would give me "xyz" 但我希望找到一个解决方案,在以下情况下获得域名: abc@alumni.xyz.com abc@xyz.org abc@xyz.co.in abc@xyz.it 我想到的一个解决方案是使用正则表达式,去掉最后一个点后面的任何内容,但仍然留下特殊的域,如xyz.c

我正在尝试使用Python从电子邮件字符串中提取域名。对于基本情况,例如abc@xyz.com,以下措施效果良好:

string.split("@")[1].rstrip(".com")   #would give me "xyz"
但我希望找到一个解决方案,在以下情况下获得域名:

abc@alumni.xyz.com abc@xyz.org abc@xyz.co.in abc@xyz.it
我想到的一个解决方案是使用正则表达式,去掉最后一个点后面的任何内容,但仍然留下特殊的域,如xyz.co.sy,我希望在其中只得到xyz

下面的代码应该可以帮助您完成所需的操作:

fromAddr = message.get('From').split('@')[1].rstrip('>')
        fromAddr = fromAddr.split(' ')[0]

下面的代码应该可以帮助您完成所需的操作:

fromAddr = message.get('From').split('@')[1].rstrip('>')
        fromAddr = fromAddr.split(' ')[0]
这也会起作用

str.split("@")[1].split(".")[0]
这也会起作用

str.split("@")[1].split(".")[0]

您需要向正则表达式提供每个TLD。不可能没有。您将需要向正则表达式提供每个TLD。没有它是不可能的。