joeisme1
joeisme1

Reputation: 45

Python phonenumbers error str has no attribute country code

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]

Upvotes: -1

Views: 2133

Answers (2)

Gedeon Mutshipayi
Gedeon Mutshipayi

Reputation: 4073

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

Upvotes: 0

jeremyr
jeremyr

Reputation: 530

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) 

Upvotes: 2

Related Questions