私は、profanityフィルタをチェックするための用語を含むjsonファイルを持っています。Python/json profanity filterで用語全体を解析する
これを使用して(別の記事から検索)、jsonを解析し、設定された単語のデータオブジェクトを検索します。
def word_filter(self, *field_names):
import json
from pprint import pprint
with open('/var/www/groupclique/website/swearWords.json') as data_file:
data = json.load(data_file)
for field_name in field_names:
for term in data:
if term in field_name:
self.add_validation_error(
field_name,
"%s has profanity" % field_name)
class JobListing(BaseProtectedModel):
id = db.Column(db.Integer, primary_key=True)
category = db.Column(db.String(255))
job_title = db.Column(db.String(255))
@before_flush
def clean(self):
self.word_filter('job_title')
"plumber"という文字列を使用すると、jsonファイルの "plug"という単語のチェックに失敗します。 "plu"は両方の用語にあるからです。 jsonファイル内の単語全体を部分的ではなく強制的に使用する方法はありますか?出力は、一度誤っイマイチ走っ:
({ "validation_errors": { "job_title": " job_title has profanity" } })
HTTP PAYLOAD:
{
"job_title":"plumber",
}
あなたのコードセグメント(またはそれが非常に大きい場合はそのサブセット)に 'field_names'定義を追加できますか?またコードを実行するときの出力 –
私はあなたが求めたものを追加したと信じています。 – draxous
おそらくあなたが過ごしているデータは、あなたが思うタイプのものではないと思います。 'word_filter'(' job_title ') 'を' word_filter'メソッドの中で呼び出すと、 'field_names'は'(' job_title '、) 'という内容、つまりその中に1つの文字列を持つタプルを持ちます。 'if term in field_name'テストは' test_title 'の '' plug'に相当します。これは基本的に ''plug'が' test_title 'という文字列の部分文字列として存在するのでしょうか?私はそれがあなたがやろうとしていることではないと思います...または間違っていますか? –