正在尝试筛选inpu

2024-05-23 16:04:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图过滤输入,这样不仅当输入的内容被过滤掉,而且如果后面有单词或者有空格或其他什么的话。在

现行简化代码:

profanity = ["rude", "words"]

userInput = input(" : ")
if userInput in (profanity):
    inputLength = len(userInput)
    userInput = ""
    for i in range(inputLength):
        userInput += "*"
print (userInput)

所以在这个例子中,它将使用"rude""word",但不适用于{}和{},%是任何单词/句子的情况。清单本身就有127个条目。在


Tags: 代码in内容forinputlenif单词
2条回答

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./第二种情况:你想审查粗鲁的****和粗鲁的c****

如果你想替换rude的任何实例(即使是crude或任何其他实例),你可以使用相反的方法

^{pr2}$

无论如何,这是两种方法/目标的基本思想,还有很多改进的余地(标点符号、大写字母、表达式、更高级的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']。我希望这对你有用。在

相关问题 更多 >