Каков наилучший способ форматирования номера телефона в Python?
Если все, что у меня есть, это строка из 10 или более цифр, как я могу отформатировать это как номер телефона?
некоторые тривиальные примеры:
555-5555
555-555-5555
1-800-555-5555
Я знаю, что это не единственные способы их форматирования, и очень вероятно, что я оставлю вещи, если я сделаю это сам. Есть ли библиотека python или стандартный способ форматирования телефонных номеров?
4 ответов
похоже, что ваши примеры отформатированы с трехзначными группами, кроме последнего, вы можете написать простую функцию, Использовать тысячу разделителей и добавить последнюю цифру:
>>> def phone_format(n):
... return format(int(n[:-1]), ",").replace(",", "-") + n[-1]
...
>>> phone_format("5555555")
'555-5555'
>>> phone_format("5555555")
'555-5555'
>>> phone_format("5555555555")
'555-555-5555'
>>> phone_format("18005555555")
'1-800-555-5555'
вот еще один адаптированный utdemir это и данное решение это будет работать с Python 2.6, так как форматирование", " является новым в Python 2.7.
def phone_format(phone_number):
clean_phone_number = re.sub('[^0-9]+', '', phone_number)
formatted_phone_number = re.sub("(\d)(?=(\d{3})+(?!\d))", r"-", "%d" % int(clean_phone_number[:-1])) + clean_phone_number[-1]
return formatted_phone_number
простое решение может заключаться в том, чтобы начать сзади и вставить дефис после четырех чисел, а затем сделать группы из трех до начала строки. Я не знаю о встроенной функции или что-то в этом роде.
вы можете найти это полезным: http://www.diveintopython3.net/regular-expressions.html#phonenumbers
регулярные выражения будут полезны, если вы принимаете пользовательского ввода телефонных номеров. Я бы не использовал точное подход по ссылке выше. Что-то более простое, например, просто удаление цифр, вероятно, проще и так же хорошо.
кроме того, вставка запятых в числа является аналогичной проблемой, которая была эффективно решена в другом месте и может быть адаптирована к этой проблеме.