У меня есть список с различным форматированием электронной почты, который я хочу объединить все в одном.
Существует 2 типа электронной почты:
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.