Найти телефонные номера в имеющемся листе | python

Имеется лист вида:

['Список клиентов и задач от 09 апреля 2020 г.', '№ клиента', 'Ник клиента', 'ФИО и Контакты', 'Менеджер клиента', 'Статус клиента', 'Дата', 'Менеджер задачи', 'Действие', 'Итог', 'Задача', 14872, 'Текст', 'ТЕКСТ Александр +X(XXX)XXX-XX-XX; Александр +X(XXX)XXX-XX-XX; Александр +X(XXX)XXX-XX-XX; Александр +X(XXX)XXX-XX-XX; АЛЕКСАНДР ПЕРЕЗВОНИТЬ +X(XXX)XXX-XX-XX; АЛЕКСАНДР ПЕРЕЗВОН +X(XXX)XXX-XX-XX', 'Фамилия Имя Отчество']

Необходимо извлечь номера телефонов вида +X(XXX)XXX-XX-XX, преобразовать их в вид XXXXXXXXXXX - то есть убрать "+", "(", ")", "-". Прошу заметить, что в элементах списка есть повторение номеров: 'ТЕКСТ Александр +X(XXX)XXX-XX-XX; Александр +X(XXX)XXX-XX-XX; ...'

регулярка: r"\+[7-8]\([0-9]+\)[0-9]+\-[0-9]+\-[0-9]+"


Ответы (1 шт):

Автор решения: Pavel Olkhovskii

Всем спасибо, разобрался!

for i in l:
    tel = str(i)
    tel2 = (re.findall('\+([7-8]\([0-9]+\)[0-9]+\-[0-9]+\-[0-9]+)', tel))
    if tel2:
        l2.append(tel2)

Добавил все номера в отдельный список,

Получилось что-то такое:

[['X(XXX)XXX-XX-XX', 'X(XXX)XXX-XX-XX', 'X(XXX)XXX-XX-XX', 'X(XXX)XXX-XX-XX', 'X(XXX)XXX-XX-XX, 'X(XXX)XXX-XX-XX'], ['X(XXX)XXX-XX-XX', 'X(XXX)XXX-XX-XX'], ...

Затем:

for x in l2:
  for y in x:
    l4.append(y)

Наверное, можно было как-то проще сделать и менее коряво.

→ Ссылка