Для вашего случая использования может оказаться излишним, если все ваши номера отформатированы одинаково, но вы можете рассмотреть возможность использования модуля phonenumbers . Это позволит вам очень легко добавить функциональность (например, международные телефонные номера, другое форматирование и т. Д.).
Вы можете проанализировать свои номера следующим образом:
>>> import phonenumbers
>>> parsed_number = phonenumbers.parse('1112223333', 'US')
>>> parsed_number
PhoneNumber(country_code=1, national_number=1112223333L, extension=None, italian_leading_zero=False, country_code_source=None, preferred_domestic_carrier_code=None)
Затем, чтобы отформатировать его так, как вы хотите, вы можете сделать это:
>>> phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumber())
u'111-222-3333'
Обратите внимание, что вы можете легко использовать другие форматы:
>>> phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumberFormat.NATIONAL)
u'(111) 222-3333'
>>> phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumberFormat.INTERNATIONAL)
u'+1 111-222-3333'
>>> phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumberFormat.E164)
u'+11112223333'