Номер телефона в формате Python

Matrix21 спросил: 13 июня 2018 в 09:30 в: python

Как бы я хотел форматировать 10-значную строку: 0123456789 в формат номера телефона:

(012) 345-6789

Есть ли конкретная библиотека для использования или вы можете использовать регулярное выражение?

Я сделал это наоборот, используя re.sub('[^0-9]', '', '(012) 345-6789')


4 ответа

Есть решение
blhsing ответил: 13 июня 2018 в 09:40
import re
print('(%s) %s-%s' % tuple(re.findall(r'\d{4}$|\d{3}', '0123456789')))

Выводится:

(012) 345-6789
Rafael ответил: 13 июня 2018 в 09:43

Вы также можете использовать библиотеку, например phonenumbers?

Установить ее:

pip install --user phonenumbers

Пример кода:

import phonenumbers 
phonenumbers.format_number(phonenumbers.parse("0123456789", 'US'),
                           phonenumbers.PhoneNumberFormat.NATIONAL)

Вывод:

'(012) 345-6789'
user3483203 ответил: 13 июня 2018 в 09:50

Использование re.sub позволяет обрабатывать форматирование выходной строки в одной команде.

import re
s = '0123456789'>>> re.sub(r'(\d{3})(\d{3})(\d{4})', r'(\1) \2-\3', s)
'(012) 345-6789'
Mike Fa ответил: 13 июня 2018 в 10:04

Разделите строку на части, которые вам нужно разделить, например первые три номера для кода области (учебник по нарезке), затем объедините части и форматирование вместе (учебник по конкатенации).

num="0123456789"
print("("+num[:3]+")"+num[3:6]+"-"+num[6:])

Дополнительное видео по вопросу: Номер телефона в формате Python

Python Tutorial: re Module - How to Write and Match Regular Expressions (Regex)

Python 3 Programming Tutorial - Regular Expressions / Regex with re

Python RegEx | Python Regular Expressions Tutorial | Python Tutorial | Python Training | Edureka