What's the best way to format a phone number in Python?

后端 未结 4 1246
慢半拍i
慢半拍i 2020-12-01 20:32

If all I have is a string of 10 or more digits, how can I format this as a phone number?

Some trivial examples:

555-5555
555-555-5555
1-800-555-5555
         


        
相关标签:
4条回答
  • 2020-12-01 21:09

    Here's one adapted from utdemir's solution and this solution that will work with Python 2.6, as the "," formatter is new in 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
    
    0 讨论(0)
  • 2020-12-01 21:11

    for library: phonenumbers (pypi, source)

    Python version of Google's common library for parsing, formatting, storing and validating international phone numbers.

    The readme is insufficient, but I found the code well documented.

    0 讨论(0)
  • 2020-12-01 21:33

    Seems like your examples formatted with three digits groups except last, you can write a simple function, uses thousand seperator and adds last digit:

    >>> 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'
    
    0 讨论(0)
  • 2020-12-01 21:34

    A simple solution might be to start at the back and insert the hyphen after four numbers, then do groups of three until the beginning of the string is reached. I am not aware of a built in function or anything like that.

    You might find this helpful: http://www.diveintopython3.net/regular-expressions.html#phonenumbers

    Regular expressions will be useful if you are accepting user input of phone numbers. I would not use the exact approach followed at the above link. Something simpler, like just stripping out digits, is probably easier and just as good.

    Also, inserting commas into numbers is an analogous problem that has been solved efficiently elsewhere and could be adapted to this problem.

    0 讨论(0)
提交回复
热议问题