Ответ 1
для библиотеки: phonenumbers (pypi, source)
Python версия общей библиотеки Google для разбора, форматирования, хранения и проверки международных телефонных номеров.
Чтение недостаточно, но я нашел, что код хорошо документирован.
Если у меня есть строка из 10 или более цифр, как я могу отформатировать это как номер телефона?
Некоторые тривиальные примеры:
555-5555
555-555-5555
1-800-555-5555
Я знаю, что это не единственные способы их форматирования, и, скорее всего, я оставлю все, если я сделаю это сам. Есть ли библиотека python или стандартный способ форматирования телефонных номеров?
для библиотеки: phonenumbers (pypi, source)
Python версия общей библиотеки Google для разбора, форматирования, хранения и проверки международных телефонных номеров.
Чтение недостаточно, но я нашел, что код хорошо документирован.
Похоже, что ваши примеры, отформатированные с тремя цифрами, за исключением последнего, вы можете написать простую функцию, используя тысячу секторов и добавив последнюю цифру:
>>> 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, "formatter является новым в 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"\1-", "%d" % int(clean_phone_number[:-1])) + clean_phone_number[-1]
return formatted_phone_number
Простое решение может состоять в том, чтобы начать с обратной стороны и вставить дефис после четырех чисел, а затем сделать группы по три, пока не будет достигнуто начало строки. Я не знаю о встроенной функции или что-то в этом роде.
Вам может показаться полезным: http://www.diveintopython3.net/regular-expressions.html#phonenumbers
Регулярные выражения будут полезны, если вы принимаете пользовательский ввод телефонных номеров. Я бы не использовал точный подход, который следовал по вышеуказанной ссылке. Что-то более простое, как просто удаление цифр, возможно, проще и так же хорошо.
Кроме того, вставка запятых в числа является аналогичной проблемой, которая была эффективно решена в другом месте и может быть адаптирована к этой проблеме.