为什么python Phonenumbers库为+358 *****的国家/地区提供null?

时间:2016-07-09 12:00:47

标签: python phone-number

我使用以下代码获取电话号码所在的国家/地区,目前我使用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''

3 个答案:

答案 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*****?

如果有答案,我会在稍后发布。