试图过滤输入
Trying to filter input
我正在尝试过滤输入,因此不仅在输入准确输入时会被过滤,而且如果后面有单词或有 space 或其他内容时也会被过滤。
当前简化代码:
profanity = ["rude", "words"]
userInput = input(" : ")
if userInput in (profanity):
inputLength = len(userInput)
userInput = ""
for i in range(inputLength):
userInput += "*"
print (userInput)
所以在这个例子中,它将适用于 "rude"
和 "word"
,但不适用于 "rude "
和 "rude %"
、%
等情况] 是任何 word/sentence。该列表本身有 127 个项目。
1./ 第一种情况: 你想审查粗鲁的 **** 但不是粗鲁的 c****
问题在于,当您实际上想要处理子字符串(或者更具体地说是标记,因为 pour 可能想要保留诸如 crude
之类的项目)时,您正在测试整个输入字符串
基本思路是标记您的输入字符串并独立验证每项工作。一个非常基本的方法(如果您不想深入研究更先进的 NLP 技术)是分割空格。
你可以试试这个:
profanity = ["rude", "words"]
userInput = input(" : ")
parts = userInput.split()
output = []
for p in parts:
if p in profanity:
output.append('*' * len(p))
else:
output.append(p)
print(' '.join(output))
记住这是一些您可以改进的基本代码。它不会处理标点符号 (rude.
) 或不同大小写 (RUDE
)
的情况
2./ 第二种情况: 你想审查 rude as **** AND crude as c****
如果你想替换任何粗鲁的实例(即使是粗鲁的或任何其他的)你可以使用相反的方法
profanity = ["rude", "words"]
userInput = input(" : ")
for p in profanity:
if p in userInput:
userInput = userInput.replace(p, '*' * len(p))
print(userInput)
无论如何,这是approaches/objectives的基本思想,还有很大的改进空间(标点符号、大写字母、表达式、更高级的 NLP...)
def filter_function(input):
words_to_be_filtered = ["rude", "words"]
searched = map(lambda x: x in input, words_to_be_filtered)
return reduce(lambda x,y: x or y, searched, False)
inputs = ["something", "somethingrude", "sometwordshing"]
print(filter(filter_function, inputs))
上面的函数给出了以下结果:['somethingrude', 'sometwordshing']
。我希望这对你有用。
我正在尝试过滤输入,因此不仅在输入准确输入时会被过滤,而且如果后面有单词或有 space 或其他内容时也会被过滤。
当前简化代码:
profanity = ["rude", "words"]
userInput = input(" : ")
if userInput in (profanity):
inputLength = len(userInput)
userInput = ""
for i in range(inputLength):
userInput += "*"
print (userInput)
所以在这个例子中,它将适用于 "rude"
和 "word"
,但不适用于 "rude "
和 "rude %"
、%
等情况] 是任何 word/sentence。该列表本身有 127 个项目。
1./ 第一种情况: 你想审查粗鲁的 **** 但不是粗鲁的 c****
问题在于,当您实际上想要处理子字符串(或者更具体地说是标记,因为 pour 可能想要保留诸如 crude
之类的项目)时,您正在测试整个输入字符串
基本思路是标记您的输入字符串并独立验证每项工作。一个非常基本的方法(如果您不想深入研究更先进的 NLP 技术)是分割空格。
你可以试试这个:
profanity = ["rude", "words"]
userInput = input(" : ")
parts = userInput.split()
output = []
for p in parts:
if p in profanity:
output.append('*' * len(p))
else:
output.append(p)
print(' '.join(output))
记住这是一些您可以改进的基本代码。它不会处理标点符号 (rude.
) 或不同大小写 (RUDE
)
2./ 第二种情况: 你想审查 rude as **** AND crude as c****
如果你想替换任何粗鲁的实例(即使是粗鲁的或任何其他的)你可以使用相反的方法
profanity = ["rude", "words"]
userInput = input(" : ")
for p in profanity:
if p in userInput:
userInput = userInput.replace(p, '*' * len(p))
print(userInput)
无论如何,这是approaches/objectives的基本思想,还有很大的改进空间(标点符号、大写字母、表达式、更高级的 NLP...)
def filter_function(input):
words_to_be_filtered = ["rude", "words"]
searched = map(lambda x: x in input, words_to_be_filtered)
return reduce(lambda x,y: x or y, searched, False)
inputs = ["something", "somethingrude", "sometwordshing"]
print(filter(filter_function, inputs))
上面的函数给出了以下结果:['somethingrude', 'sometwordshing']
。我希望这对你有用。