0

私はPythonが初めてです。多くの電子メール ID と通常の単語を含む文字列があります。特定の単語を含むメール ID の数を取得したいと考えています。現在、正規表現を使用して文字列を含む単語を除外し、このリストの別の正規表現を使用して電子メール ID を除外しています。これを行うためのより良い方法があるかどうかを知りたかっただけです!

例:

Str1 : この fet@dmail.com は、get@dmail.com および net@dfet.com に関連付けられた文字列に感染しています。

Str2: フェット

プログラムは count を 2 として返す必要があります 1. fet@dmail.com 2. net@dfet.com

これは私が現在使用しているコードです.. str2 を含む文字列のリストを作成し、それが電子メール ID であるかどうかを確認しています...

text_to_search = ".*(" + word_to_be_searched.lower() + ").*"
regex = re.compile(text_to_search)
lister = [m.group(0) for l in row_value[column_index].lower().split( ) for m in       [regex.search(l)] if m]

for li in lister:
    if re.match("^[a-zA-Z0-9._%-]+@[a-zA-Z0-9._%-]+.[a-zA-Z]{2,6}$", li):
        match_count = match_count + 1
4

1 に答える 1

0

以下のコードを実行してください。問題が解決します

import re
regex = re.compile(("([a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`"
"{|}~-]+)*(@|\sat\s)(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(\.|"
"\sdot\s))+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)"))
email_iter = (email[0] for email in re.findall(regex, str1) if not   email[0].startswith('//'))
email_collec = []
for email in email_iter:
   email_collec.append(email)
count = 0
str2 = "fet"
for i in range(len(coll)):
    if str2 in coll[i]:
        count+=1
print count  
于 2013-10-24T13:21:13.663 に答える