无论格式如何,从文本文件中检索 Phone 数字

Retrieve Phone number from text file irrespective of format

我想从文本文件中检索 phone 个数字。我正在尝试使用 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

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

我的正则表达式是这样的:[^\d]。它匹配输入中的任何 non-digits。我正在用一个空字符串替换每个匹配的字符。所以,我们最后只剩下数字了。

这里有一些可以帮助您入门的内容:

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,但你也可以使用类似的方法。

Update, based on Ole V.V.'s comment:

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

希望对您有所帮助!