【发布时间】:2018-11-08 07:55:02
【问题描述】:
我有一个包含不同电子邮件格式的列表,我想将其统一为一个。 有两种类型的电子邮件:
name.surname@dom
name.surname.extern@dom
我的程序允许用户输入电子邮件,并且不必一直输入"@dom"(总是相同的),我所做的是允许用户写name.surname或name.surname.e然后脚本将这些用户名替换为 @dom 或 .extern@dom
当我将所有不同格式的邮件存储在一个列表中时,问题就出现了,我希望它们符合标准,这样如果我有
["john.doe@dom", "john2.doe", "john3.doe.e","john4.doe.extern@dom"]
一切都变成了这样
["john.doe@dom", "john2.doe@dom", "john3.doe.extern@dom","john4.doe.extern@dom"]
我尝试了列表推导,但我得到的只是三个串联:
["%s.xtern@dom" % x for x in mails if x[-2:] == ".e"] +
["%s@dom" %x for x in mails if "@dom not in mails" and x[-2:] != ".e"] +
[x for x in mails if "@dom" in x]
我确信有一种更好的方法,不需要我做 3 次列表推导,也不需要我做
for i,v in enumerate(mails):
if "@dom" not in v:
mails[i] = "%s@dom" % v
etc.
【问题讨论】:
标签: python list list-comprehension