Reputation: 45
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)
![The error message]
Upvotes: -1
Views: 2133
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
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