chincharovpc
@chincharovpc

Как написать регулярное выражение?

Есть список(ФИО, почта)

"AAAAAAAA BBBBBBBB CCCCCCCC", "dddddddd@mail.ru"
"AAAAAAAA BBBBBBBB CCCCCCCC", "eeeeeeeee@mail.ru"
"AAAAAAAA BBBBBBBB CCCCCCCC", "ffffffffffff-SV@mail.ru"
"AAAAAAAA BBBBBBBB CCCCCCCC", "ggggggggg-SV@mail.ru"
"AAAAAAAA BBBBBBBB CCCCCCCC", "hhhhhhhh-SV@mail.ru"


Нужно заменить на:

"name": "AAAAAAAA BBBBBBBB CCCCCCCC",
"emails": ["dddddddd@mail.ru","eeeeeeeee@mail.ru", "ffffffffffff-SV@mail.ru""ggggggggg-SV@mail.ru", "hhhhhhhh-SV@mail.ru"]


Я смог написать только для первых двух строк
> from: (".*"), ("[a-zA-Z-.]*")\n(".*"), ("[a-zA-Z_-.@]*")
>
> to:  "name": $1, "emails":[$2,$4]
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 1
@PavelMos
имхо можно без регулярных, например через словарь.
уникальные ключи - адреса
неуникальные ФИО - значения
только здесь они в обратном порядке
s1=[
["AAAAAAAA BBBBBBBB CCCCCCCC", "dddddddd@mail.ru"],
["AAAAAAAA BBBBBBBB CCCCCCCC", "eeeeeeeee@mail.ru"],
["AAAAAAAA BBBBBBBB CCCCCCCC", "ffffffffffff-SV@mail.ru"],
["AAAAAAAA BBBBBBBB CCCCCCCC", "ggggggggg-SV@mail.ru"],
["AAAAAAAA BBBBBBBB CCCCCCCC", "hhhhhhhh-SV@mail.ru"]
]
d1={x[1]:x[0] for x in s1}
fio=set(d1.values()) #уникальные фио
for f in fio:
   fEmails=[x for x in d1 if d1[x]==f]
   print (f)
   print (*fEmails, sep=',')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы