我有一個json文件,其中包含用於檢查褻瀆過濾器的術語。解析Python/json褻瀆過濾器中的整個術語
["bad", "word", "plug"]
,我使用這個(從另一篇文章中找到)解析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')
問題是如果我使用字符串「管道工」,由於json文件中的「插件」一詞,檢查失敗。因爲「plu」是兩個詞。有什麼辦法強制使用json文件中的整個單詞而不是部分?輸出一次運行沒有錯誤:
({ "validation_errors": { "job_title": " job_title has profanity" } })
HTTP PAYLOAD:
{
"job_title":"plumber",
}
您可以將'field_names'定義添加到您的代碼段(或者它的一個子集,如果它非常大的話)。當你運行代碼 –
時,你的輸出也是我相信我添加了你所要求的。 – draxous
我認爲你傳遞的數據可能不是你認爲的那種類型。如果你在'word_filter'方法內調用'word_filter('job_title')','field_names'內容爲'('job_title',)',即一個元組中包含一個字符串的元組。您的'field_name'測試中的if項相當於'test_title'中的'plug',這基本上意味着「Does'plug'作爲字符串'test_title'中的子字符串存在嗎?」。我不認爲這就是你想要做的......或者我錯了嗎? –