5

It seems like '5187621769' should be a very easy number for the phonenumbers library to parse. It's 10 digits with a US area code. But...no luck.

Setup:

import phonenumbers
number = '5187621769'

Method 1:

parsed = phonenumbers.parse(number)

This throws an error.

Method 2:

parsed = phonenumbers.parse("+" + number)

Gives country code = 51, which is not US.

I know I can do:

parsed = phonenumbers.parse(number,region="US")

But I don't always know the number will be US (this is just one case where I discovered I wasn't getting desired behavior). Is there an option or formatting trick I'm missing? Thanks!

exp1orer
  • 11,481
  • 7
  • 38
  • 51

3 Answers3

6

You should simply use:

parsed = phonenumbers.parse(number, 'US')
5

It would a very easy number if phonenumbers was an US only library. You are missing the "+1" a.k.a. country code. If you would like to assume that numbers that phonenumbers can't parse are US numbers you could do something like:

try:
    parsed = phonenumbers.parse(number)
except phonenumbers.NumberParseException as npe:
    parsed = phonenumbers.parse('+1{}'.format(number))
1

You have to write Country Code with Phone Number while searching for Phone Number details.

Moreover, Here is an API (a wrapper of libphonenumber) for Phone Numbers:

http://blog.ones-app.com/ones-phone-number-api/

Azhar Nawaz
  • 91
  • 12