我使用以下代码获取电话号码所在的国家/地区,目前我使用phonenumbers
:
query = phonenumbers.parse(number, None)
geocoder.country_name_for_number(query, "en")
对于+358
的数字,它会出错。我测试的库版本是最新的:7.4.4
任何人都有此库的解决方案或解决方法吗?该国家/地区应为Finland
EDIT1: 例如,下面的数字给出一个空字符串:
>>> number = '+358753263000'
>>> query = phonenumbers.parse(number, None)
>>> geocoder.country_name_for_number(query, "en")
u''
答案 0 :(得分:2)
您可能覆盖了它。正如@Barmar指出的那样,根据Wikipedia,'+ 358'之后的数字应该是9(或0)。
>>> geocoder.country_name_for_number(phonenumbers.parse('+358753263000'), 'en')
u''
>>> geocoder.country_name_for_number(phonenumbers.parse('+358953263000'), 'en')
u'Finland'
将第一个号码从7
更改为9
会给芬兰带来好处。你也有太多的数字,但似乎并不介意。
答案 1 :(得分:1)
我认为问题是前缀+358
不明确。你可以看到,如果你打电话
>>> geocoder.region_codes_for_country_code(358)
('FI', 'AX')
+358
是芬兰和奥兰群岛(AX)的前缀。
如果代码含糊不清,请country_name_for_number
然后checks all区域,并为特定号码调用is_valid_number_for_region
。如果它发现该数字在多个区域中有效,则返回一个空字符串。
答案 2 :(得分:0)
我在github
页面上打开了一个问题:
Why python phonenumbers library return empty string for country of +3587*****?
如果有答案,我会在稍后发布。