2017-09-10 6 views
0

私は肯定的および否定的な感情を持つ単語のリストを持っています。Pythonは繰り返し文字を削除した後に単語リストに一致します

happpppyyy -> happyy 

saaad -> saad 

チェックした場合、例えば:私はこのような繰り返しの文字を削除してるツイートを処理するときに今(のみ2回の繰り返しを許可する)['happy', 'sad']

saadは、sadに似ているので、Trueを返すはずです。

この動作はどのように実装できますか?

+0

@PranavCBalan説明? –

+1

@PranavCBalan:私には(囁く)Perlのように見えます。 – cdarke

+1

何か考慮すべき点:間違った試合をするのは避けられないだろうと思います。 –

答えて

3

私は動的に言葉回し正規表現を構築します。これに "幸せ" の単語のリストを渡し

h+a+p+p+y+ 

happy 

を:

import re 

re_list = [re.compile("".join(["{}+".format(c) for c in x])) for x in ['happy', 'glad']] 

それをテスト(anyを使用してTrueを返します。一致する正規表現がある場合は

for w in ["haaappy","saad","glaad"]: 
    print(w,any(re.match(x,w) for x in re_list)) 

結果:

haaappy True 
saad False 
glaad True 
+0

は、そのアプローチを理解するためにしばらく時間がかかりました。私はそれが私のために十分な辛口であるべきだと思う。この方法では、実際に複数の文字を削除する手順をスキップできます –

関連する問題