2017-02-11 23 views
1

テキストファイルから電話番号を取得したい。私はthird party python version of google's phone number libraryを使用しようとしています。しかし、それは元のためにそれらの間のスペースを持つ数字を取得することはできません。 - "+91 - 9871127622"。フォーマットに関係なくテキストファイルから電話番号を取得

周辺には何もありませんか?

ない場合は、次のように

私のpythonコードは(何も指示が提供されていない)私は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には入っていませんが、同様のアプローチを使用することもできます。

オレV.V.に基づいて更新のコメント:

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

は、この情報がお役に立てば幸い!

+1

電話番号に最初の数字の前に '+ 'が含まれているかどうかは、おそらく国コードがあることを示しているのでわかります。 –

+0

実際には国番号も必要です。しかし、「+」記号が記載されていなくても電話を検出するはずです。 – anshaj

+0

これにより、国コードとその前に '+ '記号が保持されます。 – anacron

関連する問題