如何在python中捕获"拆分"异常?

Bil*_*gen 6 python

我正在尝试解析电子邮件地址列表以删除用户名和"@"符号,只留下域名.

示例:blahblah@gmail.com所需输出:gmail.com

我用以下代码完成了这个:

for row in cr: 
    emailaddy = row[0]
    (emailuser, domain) = row[0].split('@')
    print domain
Run Code Online (Sandbox Code Playgroud)

但我的问题是当我遇到格式不正确的电子邮件地址.例如,如果该行包含"aaaaaaaaa"(而不是有效的电子邮件地址),则程序会因错误而崩溃

(emailuser, domain) = row[0].split('@')
ValueError: need more than 1 value to unpack. 
Run Code Online (Sandbox Code Playgroud)

(如你所期望的),而不是检查所有的电子邮件地址的有效性,我宁愿只是没有更新抢域,并移动到下一个记录.如何正确处理此错误并继续前进?

所以对于以下列表:

blahblah@gmail.com
mmymymy@hotmail.com
youououou
nonononon@yahoo.com
Run Code Online (Sandbox Code Playgroud)

我希望输出为:

gmail.com
hotmail.com

yahoo.com
Run Code Online (Sandbox Code Playgroud)

谢谢!

Fel*_*Yan 17

你想要这样的东西吗?

try:
    (emailuser, domain) = row[0].split('@')
except ValueError:
    continue
Run Code Online (Sandbox Code Playgroud)


Ran*_*Rag 7

您可以过滤掉不包含的地址@

>>> [mail.split('@')[1] for mail in mylist if '@' in mail]
['gmail.com', 'hotmail.com', 'yahoo.com']
>>>
Run Code Online (Sandbox Code Playgroud)