pythonでNGワードの処理をしたいときに使えるコードを紹介します。
基本的には in 演算子でことたりるが・・・
pythonには特定の文字が含まれているか、調べるときに使う演算子にin演算子があります。
特定の文字が含まれているか
特定の文字が含まれているか調べるには以下のようなコードを書きます。
target_word = "hogehoge" if "hoge" in target_word: print("hogeが含まれています")
多少難ありのコードですが使い方としては上記のようにします。
リストに特定の要素があるか調べる
in演算子のもうひとつの使い方として、リストに特定の要素が含まれているか調べる方法があります。
words = ["hoge", "fuga", "fugafuga"] if "hoge" in words: print("hogeが含まれています")
リストにつかいかたとしてはこうですよね。
pythonでNGワードの処理をしたい場合
pythonでNGワードの処理をしたい場合、上記二つのin演算子の使い方では困ることがあります。
とどのつまり、target_wordに対してNGワードが含まれているかどうか調べたいわけですが、NGワードは当然ひとつではなく複数ありますからNGワードはリストになるわけです。こうなってくると少し頭をひねならないといけません。
やり方はいろいろあると思いますが、ng_word_listをfor文でまわしtarget_wordにNGワードがひとつでも含まれていたらTrueを返すようにします。
def ng_words(target_word): ng_word_list = ["hoge", "fuga"] for ng_word in ng_word_list: if ng_word in target_word: return True print(ng_words("僕の名前はhogeです"))
Trueを返すようにすれば、条件分岐で使えますから、関数化するのが吉だと思われます。
コメント