2017-02-11 20 views
1

Я хочу получить телефонные номера из текстового файла. Я пытаюсь использовать third party python version of google's phone number library. Но он не может извлекать числа с пробелами между ними для ex. - «+91 - 9871127622».Извлечение телефонного номера из текстового файла независимо от формата

Есть ли способ обойти его?

Если нет, то я хотел установить Google's original library of phone numbers , но я не знаю, как установить и включить его в свой код (не предусмотрены никакие инструкции)

Мой питон код выглядит следующим образом:

#!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 
+0

Если пробелы являются единственной проблемой, то вы решили удалить их? – Fallen

+0

Одно время регулярное выражение - хорошая идея !!!! :-) – erip

+0

Просьба представить образец текста. – Jan

ответ

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, но вы также можете использовать подобный подход.

Update, основанный на Ole В.В. «s комментарий:

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

Надеется, что это помогает!

+1

Мы, вероятно, все еще захотим узнать, содержит ли номер телефона '+' перед первой цифрой, поскольку это указывает на наличие кода страны. –

+0

Мне действительно нужен код страны. Но он должен обнаружить телефон, даже если знак «+» не упоминается. – anshaj

+0

Yup. Это сохранит код страны и знак '+' перед ним. – anacron