Форматирование телефонного номера: регулярное выражение
Програма принимает на ввод мобильный телефон.
Програма должна отформатировать телефонный номер к единому значению.
063 999-99-99 возвращает (+38) 063 999-99-99
063-99999-99 возвращает (+38) 063 999-99-99
+3806399-999-99 возвращает (+38) 063 999-99-99
380639999999 возвращает (+38) 063 999-99-99
Сделал регулярку которая соответсвует формату
r'\(\+38\)\s\d{3}\s\d{3}[\-]\d{2}[\-]\d{2}'
Подскажите пожалуйста как избежать перебора всевозможных вариантов. Сделать так чтобы инпут номер приходил к нужному формату без тонны if, elif, else. Спасибо!
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
можно попробовать так:
import re
def num_form(a: str) -> str:
a=re.sub(r"\D","", a)
res = re.sub(r"(.*?)(.{3})(.{3})(.{2})(.{2})$", r"(+38) \2 \3-\4-\5", a)
return res
print(num_form("063 999-99-99"))
print(num_form("063-99999-99"))
print(num_form("+3806399-999-99"))
print(num_form("380639999999"))
(+38) 063 999-99-99
(+38) 063 999-99-99
(+38) 063 999-99-99
(+38) 063 999-99-99