はじめに
タイトルの通り、禁止ワードを置換する方法を説明します。
例えば、
グラビア⇒グ〇ビア
のように、NGワード2文字目を置換します。
NGワードの準備
NGワードをかき集めたNG_word.txt みたいなものを用意します。
こんな感じ
NG_word.txt
喫煙 殺人 注射器 密売 密造 グラビア
あんまり書きすぎるとこの記事がバンされちゃうので、ここらへんで。
以下みたいに改行区切りでもよいです。
NG_word.txt
喫煙
殺人
注射器
密売
密造
グラビア
NGワード/禁止ワード一覧って、ぱっと検索した感じだとあまり見つからなかったのですが、
例えば、
スパム対策用 禁止ワード・NGワード集(vector.co.jpのリンクです)
とかが参考になると思います。
ちょっとワードが少ない上に2009年のものなので古い気もしますが、他にあれば教えてください。
実際に置換する
次の関数を作りました。
雑ですが、動きはしました。
def change_NGword(string, filename="NG_word.txt", encoding="UTF-8", huseji="◯"):
# NGワードを読み取り
f = open(filename, "r", encoding=encoding)
change_str = f.read()
f.close()
# 単語ごとに区切る
change_list = change_str.split()
for change_i in change_list:
# 単語の2文字目を伏せ文字にに置換、ただし、NGワードが1文字の場合は1文字目を伏せ文字に置換
if len(change_i) == 1: # 1文字の場合:殺⇒○ のようにする
string = string.replace(change_i, huseji)
elif len(change_i) == 2: # 2文字の場合:殺人⇒殺○ のようにする
string = string.replace(change_i, change_i[0] + huseji)
else: # 3文字以上の場合:殺人鬼⇒殺○鬼 のようにする
string = string.replace(change_i, change_i[0] + huseji + change_i[2:])
return string
# テスト
print(change_NGword("これは健全な文章です"))
print(change_NGword("喫煙しているグラビアアイドル"))
print(change_NGword("注射器の使いまわし"))
実行結果
これは健全な文章です
喫◯しているグ◯ビアアイドル
注◯器の使いまわし
関数の中身をちょっと解説すると
1、NGファイルの読み込み
2、読みこんだNGファイルを単語ごとに区切りリストにする
3、チェックしたい文字列を単語リストで全探索して置換する
という手順です。
ファイル読み込みでエラーが起きたら、文字コードを適当に変えて試してください。
関数呼び出しの度にファイルをopen→closeしているので、高速に動作させたい場合はダメだと思いますが、
気にしない場合は使えると思います。