2017-01-03 31 views
-1

ここで私はalpitananadからメールIDを抽出します。これほどまでに私はこれまでにやったことがあります。文字列を抽出するには

import re 

def extracter(text): 
     reg1 = re.compile(r'(\d{3}|\(\d{3}\))?(\s|-|\.)?(\d{3})(\s|-|\.)(\d{4})') 
     se1 = reg1.findall(text) 
     print(se1) 
     for i in range(len(se1)): 
       print(''.join(se1[i])) 
     reg2 = re.compile(r'([a-zA-Z0-9][email protected]+[a-zA-Z0-9]+\.[a-zA-Z]{2,4})') 
     reg3 = re.compile(r'[a-zA-Z0-9][email protected]') 
     se3 = reg3.findall(text) 
     se2 = reg2.findall(text) 
     print(se2) 
     print(se3) 

text1 = "123-434-2432 of may name is jsdiofhsdio fh diofh dui fjf ui834y8 fwe8fweuihwe 8f e87f y87 456-243-3434 ajsfhj [email protected]" 
extracter(text1) 

私は取得しています出力は私がちょうど @の前の文字列を与える確認する1つの出力をしたい

[('123', '-', '434', '-', '2432'), ('456', '-', '243', '-', '3434')] 
123-434-2432 
456-243-3434 
['[email protected]'] 
['[email protected]'] 

です。 reg3で何を変更すればいいですか?ありがとうございました..!!!

次は動作するはず
+0

参照https://ideone.com/a79CE5 –

+1

私は、これはあなたが後にしているものですかどうかわからないけど、 ... findallは見つかった値のリストを返します(名前が示唆するように)。あなたの質問を非常に具体的に考えると、 'reg3.findall(text)[0]' –

+0

解決策が与えられました。 –

答えて

2

re.findall('(\w+)@', text1) 

出力:

>>> import re 
>>> 
>>> text1 = "123-434-2432 of may name is jsdiofhsdio fh diofh dui fjf ui834y8 fwe8fweuihwe 8f e87f y87 456-243-3434 ajsfhj [email protected]" 
>>> reg3 = re.compile(r'(\w+)@') 
>>> se3 = reg3.findall(text1) 
>>> se3 
['alpitanand20'] 
+0

ありがとう、それは目が覚めた。 –

関連する問題