Python phonenumbers error str has no attribute country code

1.8k Views Asked by At

I am trying to get the carrier of a phone number

I am using phonenumbers in python and keep getting this error

‘str’ object has no attribute ‘country_code’

Here is my code:

import phonenumbers
num = input("phone number")
from phonenumbers import carrier
Carrier = carrier.name_for_number("+1" + num, "en")
print(Carrier)

enter image description here![The error message]

2

There are 2 best solutions below

2
jeremyr On

It seems that name_for_number wants an object, so you would have to parse the input first:

num = input("phone number")
num_object = phonenumbers.parse("+1 {}".format(num))

I would suggest you to do something like this:

import phonenumbers 
import phonenumbers.carrier 

num_object = None 

while num_object is None: 
    try: 
        num = input("phone number: ") 
        num_object = phonenumbers.parse("+1 {}".format(num), region="US") 
    except Exception as error: 
        print("ERROR: {}".format(error)) 
          
carrier = phonenumbers.carrier.name_for_number(num_object, "en") 
print(carrier) 
0
Gedeon Mutshipayi On

Regarding the documentation:

For mobile numbers in some countries, you can also find out information about which carrier originally owned a phone number.

>>> from phonenumbers import carrier
>>> ro_number = phonenumbers.parse("+40721234567", "RO")
>>> carrier.name_for_number(ro_number, "en")
'Vodafone'

The name_for_number gets a PhoneNumber object as a parameter, not a String (str).