为什么python phonenumbers库在这种情况下不起作用?

exp*_*rer 5 python libphonenumber

似乎'5187621769'应该是一个非常容易的数字,供phonenumbers库解析.这是10位数字,带有美国区号.但是......没有运气.

建立:

import phonenumbers
number = '5187621769'
Run Code Online (Sandbox Code Playgroud)

方法1:

parsed = phonenumbers.parse(number)
Run Code Online (Sandbox Code Playgroud)

这会引发错误.

方法2:

parsed = phonenumbers.parse("+" + number)
Run Code Online (Sandbox Code Playgroud)

给出国家代码= 51,这不是美国.

我知道我能做到:

parsed = phonenumbers.parse(number,region="US")
Run Code Online (Sandbox Code Playgroud)

但我并不总是知道这个数字将是美国(这只是我发现我没有得到理想行为的一个案例).有没有我缺少的选项或格式技巧?谢谢!

GML*_*udo 6

你应该简单地使用:

parsed = phonenumbers.parse(number, 'US')
Run Code Online (Sandbox Code Playgroud)


小智 5

如果电话号码是美国唯一的图书馆,这将是一个非常简单的数字。您缺少“+1”又名国家/地区代码。如果您想假设 phonenumbers 无法解析的号码是美国号码,您可以执行以下操作:

try:
    parsed = phonenumbers.parse(number)
except phonenumbers.NumberParseException as npe:
    parsed = phonenumbers.parse('+1{}'.format(number))
Run Code Online (Sandbox Code Playgroud)