Phone 中的解析异常 python 中的数字库
Parsing exception in Phone Number library in python
我的手机号码格式如下,手机号码前面没有“+”号。
如何从这些格式的数字中获取国家/地区。
我检查了文档,“+”号是必需的。
在检查数字之前手动添加“+”符号以避免解析异常的任何方式。
Mobile_Number: 9687655xxxx
Mobile_Number: 6142499xxxx
Mobile_Number: 20109811xxxx
py 脚本-
import phonenumbers
from phonenumbers import geocoder
query = phonenumbers.parse("96650072xxxx", None)
print (geocoder.description_for_number(query, "en"))
print(query.country_code)
Error-
<>@ubuntu:~/elk$ python3 a.py
Traceback (most recent call last):
File "a.py", line 4, in <module>
query = phonenumbers.parse("96650072xxxx", None)
File "/home/<>/.local/lib/python3.6/site-packages/phonenumbers/phonenumberutil.py", line 2855, in parse
"Missing or invalid default region.")
phonenumbers.phonenumberutil.NumberParseException: (0) Missing or invalid default region.
Outpt after adding '+' sign
<>@ubuntu:~/<..>$ python3 a.py
Saudi Arabia
966
如果您的源数据集只是缺少前导 +
您可以将其添加到解析调用中。
original_phonenumber = "96650072xxxx"
query = phonenumbers.parse(f"+{original_phonenumber}")
如果您有混合数据集,您需要先检查您的电话号码是否确实以 +
开头
original_phonenumber = "96650072xxxx"
if not original_phonenumber.startswith("+"):
original_phonenumber = f"+{original_phonenumber}"
query = phonenumbers.parse(original_phonenumber)
但这是不好的做法,所以我建议您修复源数据集。您确定只缺少前导 +
而不是整个国家/地区代码吗?
您可以定义一个函数来检查字符串是否以“+”开头,如果不是,则在解析之前将其添加到字符串中。
def parse_phone_number(phone_number: str) -> str:
"""Prepend '+' sign if required, then parse phone number"""
if not phone_number.startswith('+'):
phone_number = '+' + phone_number
return phonenumbers.parse(phone_number, None)
然后您只需更改此行:
query = phonenumbers.parse("96650072xxxx", None)
至:
query = parse_phone_number("96650072xxxx")
我的手机号码格式如下,手机号码前面没有“+”号。 如何从这些格式的数字中获取国家/地区。 我检查了文档,“+”号是必需的。 在检查数字之前手动添加“+”符号以避免解析异常的任何方式。
Mobile_Number: 9687655xxxx
Mobile_Number: 6142499xxxx
Mobile_Number: 20109811xxxx
py 脚本-
import phonenumbers
from phonenumbers import geocoder
query = phonenumbers.parse("96650072xxxx", None)
print (geocoder.description_for_number(query, "en"))
print(query.country_code)
Error-
<>@ubuntu:~/elk$ python3 a.py
Traceback (most recent call last):
File "a.py", line 4, in <module>
query = phonenumbers.parse("96650072xxxx", None)
File "/home/<>/.local/lib/python3.6/site-packages/phonenumbers/phonenumberutil.py", line 2855, in parse
"Missing or invalid default region.")
phonenumbers.phonenumberutil.NumberParseException: (0) Missing or invalid default region.
Outpt after adding '+' sign
<>@ubuntu:~/<..>$ python3 a.py
Saudi Arabia
966
如果您的源数据集只是缺少前导 +
您可以将其添加到解析调用中。
original_phonenumber = "96650072xxxx"
query = phonenumbers.parse(f"+{original_phonenumber}")
如果您有混合数据集,您需要先检查您的电话号码是否确实以 +
original_phonenumber = "96650072xxxx"
if not original_phonenumber.startswith("+"):
original_phonenumber = f"+{original_phonenumber}"
query = phonenumbers.parse(original_phonenumber)
但这是不好的做法,所以我建议您修复源数据集。您确定只缺少前导 +
而不是整个国家/地区代码吗?
您可以定义一个函数来检查字符串是否以“+”开头,如果不是,则在解析之前将其添加到字符串中。
def parse_phone_number(phone_number: str) -> str:
"""Prepend '+' sign if required, then parse phone number"""
if not phone_number.startswith('+'):
phone_number = '+' + phone_number
return phonenumbers.parse(phone_number, None)
然后您只需更改此行:
query = phonenumbers.parse("96650072xxxx", None)
至:
query = parse_phone_number("96650072xxxx")