这些答案使用python版本的libphonenumber,但AFAIK规则在其他端口中是相同的。
将任意国际号码转换为统一格式真的很容易......
>>> import phonenumbers
>>> x = phonenumbers.parse('+1-904-566-6820')
>>> phonenumbers.is_valid_number(x)
True
>>> phonenumbers.format_number(x, phonenumbers.PhoneNumberFormat.INTERNATIONAL)
'+1 904-566-6820'
而且你不需要知道国际格式号码的国家(它的开头有一个'+')。
>>> phonenumbers.format_number(phonenumbers.parse('+1-904-566-6820'), phonenumbers.PhoneNumberFormat.INTERNATIONAL)
'+1 904-566-6820'
>>> phonenumbers.format_number(phonenumbers.parse('+1 (904) 566-6820'), phonenumbers.PhoneNumberFormat.INTERNATIONAL)
'+1 904-566-6820'
>>> phonenumbers.format_number(phonenumbers.parse('+33 6 10 45 04 89'), phonenumbers.PhoneNumberFormat.INTERNATIONAL)
'+33 6 10 45 04 89'
您唯一需要知道号码所在国家/地区的情况是源号码不是有效的国际格式...
>>> phonenumbers.format_number(phonenumbers.parse('(904) 566-6820'), phonenumbers.PhoneNumberFormat.INTERNATIONAL)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home15/jgalloway12/code/wdPhone/phonenumbers/phonenumberutil.py", line 2450, in parse
"Missing or invalid default region.")
phonenumbers.phonenumberutil.NumberParseException: (0) Missing or invalid default region.
>>> phonenumbers.format_number(phonenumbers.parse('(904) 566-6820', 'US'), phonenumbers.PhoneNumberFormat.INTERNATIONAL)
'+1 904-566-6820'
您传递到的国家/地区代码parse
仅在输入数字无法解析为国际的情况下用作后备。