Format an un-decorated phone number in django?

后端 未结 5 804
我在风中等你
我在风中等你 2021-01-02 13:01

I\'ve got a DB chock full o\' phone numbers as strings, they\'re all formatted like 1112223333, I\'d like to display it as 111-222-3333 in my django template

I know

5条回答
  •  甜味超标
    2021-01-02 13:35

    It may be overkill for your use case if all your numbers are formatted the same way, but you might consider using the phonenumbers module. It would allow you to add functionality (e.g. international phone numbers, different formatting, etc) very easily.

    You can parse your numbers like this:

    >>> 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)
    

    Then, to format it the way you want, you could do this:

    >>> phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumber())
    u'111-222-3333'
    

    Note that you could easily use other formats:

    >>> 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'
    

提交回复
热议问题