Как привести к единому виду номера телефонов?

Как привести к единому виду?

8 (963) 672-22-29 номера -->

numbers = """89636722229
7 963 6722229
+7 911 12312 18
79152211142
8 (912) 112 34 55
  8 (912) 112 3456
+7 (912) 112 34 57  
+7 (912) 112 34 57
(912) 112 34 57
12313123123
12"""

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

Автор решения: MarianD
numbers_lst = numbers.split("\n")
only_digits = ["".join([c for c in element if c.isdigit()]) for element in numbers_lst]
formted_lst = [f"{a} ({b}{c}{d}) {e}{f}{g}-{h}{i}-{j}{k}" 
                   for a, b, c, d, e, f, g, h, i, j, k in only_digits[:8]]
result = "\n".join(formted_lst)
print(result)

Вывод:

8 (963) 672-22-29
7 (963) 672-22-29
7 (911) 123-12-18
7 (915) 221-11-42
8 (912) 112-34-55
8 (912) 112-34-56
7 (912) 112-34-57
7 (912) 112-34-57

Замечание:

Не все ваше числа 11-местные, потому я применил only_digits[:8] вместо простого only_digits. Когда вы это исправите, уберите [:8].

→ Ссылка