私は肯定的および否定的な感情を持つ単語のリストを持っています。Pythonは繰り返し文字を削除した後に単語リストに一致します
happpppyyy -> happyy
saaad -> saad
チェックした場合、例えば:私はこのような繰り返しの文字を削除してるツイートを処理するときに今(のみ2回の繰り返しを許可する)['happy', 'sad']
saad
は、sad
に似ているので、True
を返すはずです。
この動作はどのように実装できますか?
私は肯定的および否定的な感情を持つ単語のリストを持っています。Pythonは繰り返し文字を削除した後に単語リストに一致します
happpppyyy -> happyy
saaad -> saad
チェックした場合、例えば:私はこのような繰り返しの文字を削除してるツイートを処理するときに今(のみ2回の繰り返しを許可する)['happy', 'sad']
saad
は、sad
に似ているので、True
を返すはずです。
この動作はどのように実装できますか?
私は動的に言葉回し正規表現を構築します。これに "幸せ" の単語のリストを渡し
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
は、そのアプローチを理解するためにしばらく時間がかかりました。私はそれが私のために十分な辛口であるべきだと思う。この方法では、実際に複数の文字を削除する手順をスキップできます –
@PranavCBalan説明? –
@PranavCBalan:私には(囁く)Perlのように見えます。 – cdarke
何か考慮すべき点:間違った試合をするのは避けられないだろうと思います。 –