从文本文件中检索电话号码,而不考虑格式

时间:2017-02-11 13:18:11

标签: java python phone-number libphonenumber

我想从文本文件中检索电话号码。我正在尝试使用third party python version of google's phone number library。但它无法检索它们之间有空格的数字。 - “+91 - 9871127622”。

周围有什么办法吗?

如果没有,我想安装Google's original library of phone numbers 但我不知道如何安装并将其包含在我的代码中(没有提供说明)

我的python代码如下:

#!usr/bin/env python
import phonenumbers
import os
import re
import sys

file_name = sys.argv[1]
fp =open(file_name,"r")

for line in fp:
    for match in phonenumbers.PhoneNumberMatcher(line,None):
        print match

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式快速清除输入中不需要的字符。

我的正则表达式为:[^\\d]。它匹配输入中的任何非数字。我用空字符串替换每个匹配的字符。因此,我们将只留下最后的数字。

这里有一些东西让你入门:

public class CleanPhoneNumber {

    public static void main(String[] args) {
        String inputPhoneNumber = "+91 – 9871127622";
        String validPhoneNumber = cleanup(inputPhoneNumber);
        System.out.println(validPhoneNumber );
    }

    public static String cleanup(String inputPhoneNumber) {
        return inputPhoneNumber.replaceAll("[^\\d]", "");
    }

}

您可以进一步改进正则表达式。

PS:我不是Python,但你也可以使用类似的方法。

  

更新,基于 Ole V.V。的评论:

public static String cleanup(String inputPhoneNumber) {
    String cleanedUp = inputPhoneNumber.replaceAll("[^\\d]", "");
    if(inputPhoneNumber.startsWith("+")){
        return "+" + cleanedUp;
    }
    return cleanedUp;
}

希望这有帮助!