Получить номер телефона из текстового файла независимо от формата

Я хочу получить телефонные номера из текстового файла. Я пытаюсь использовать стороннюю версию Python библиотеки телефонных номеров Google. Но он не может получить числа с пробелами между ними, например, - "+91 - 9871127622".

Есть ли способ обойти это?

Если нет, я хотел установить исходную библиотеку телефонных номеров Google, но не знаю, как ее установить, и включить ее в свой код (никаких инструкций не предусмотрено).

Мой код 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 ответ

Решение

Вы можете использовать регулярное выражение для быстрой очистки нежелательных символов в вашем вводе.

Мое регулярное выражение таково: [^\\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, но вы также можете использовать аналогичный подход там.

Обновление на основе комментария Оле В.В.:

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

Надеюсь это поможет!

Другие вопросы по тегам