Python:libphonenumber - 无法提取明显的电话号码

时间:2016-09-25 04:38:48

标签: python phone-number libphonenumber

我正在使用谷歌的libphonenumbers的Python版本,但是当我在不同的文本上尝试这个库时,有时候python函数不会给我任何东西,而很明显那里有一个电话号码,有时候他们确实退回了电话号码。请参阅以下内容:

print(x2)
for match in pnum.PhoneNumberMatcher(x2, "US"):
print(match) #for the text above, it did not get the number

输出:

I just read your profile and thought it was really great. I also thought you were cute and loved the fact that you go hiking with your brothers every summer. If you want to know anything more about me, just ask.  My num 555-121-5468.

通过上面的这个文字,它不会给我任何电话号码。 但在其他情况下,如下所示,此函数为我提供了正确的输入:

x9 = "hay I hate to cut you short, its been fun chatting, but unfortuantely I gotta run. I am gald we became friends though. my number is (323) 2387890"

 for match in pnum.PhoneNumberMatcher(x9, "US"):
 print(match)

输出:

 PhoneNumberMatch [132,145) (323) 2387890

我不知道造成这个问题的原因是什么,我是Python和这个图书馆的新手,非常感谢洞察力。

1 个答案:

答案 0 :(得分:1)

555-121-5468看起来像是有效的美国电话号码,但实际上并非如此。

PhoneNumberMatcherconstructor接受leniency参数,该参数定义了该类与候选电话号码(code)的匹配程度。此参数的可能值leniency的默认值为1,它仅匹配有效的电话号码。将其更改为0将匹配可能的电话号码,如555-121-5468。

>>> for match in pnum.PhoneNumberMatcher(x2, 'US', leniency=0): 
print(match) 
...
PhoneNumberMatch [220,232) 555-121-5468

555前缀不是真正的前缀,而是用于美国电视和电影中的虚构电话号码。来自Wikipedia

  

前缀为555的电话号码被广泛用于虚构   北美电视节目,电影,视频中的电话号码   游戏和其他媒体,以防止实际的笑话和   好奇的打电话者来自困扰真实的人和组织   打电话给他们在小说作品中看到的数字;一般来说,在北方   美国,一个555作为前缀的号码将无法连接到真实   人