使用if语句和循环的净化器代码

2024-06-01 09:33:20 发布

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

嗨,我在做一个净化程序。我以前也发布过类似的代码,它们都能工作。这次我尝试了一种不同的方法。你知道吗

这是我想要的一个例子

输入=这是废话 输出=这是xxxx

这是我到目前为止的代码

def main():
    message = []
    userInput = str(input("Enter the sentence: "))
    for i in userInput:
        if((i=='c' or i =='C') and (i =='r' or i=='R')):
            i = 'x' * len(i)
        message.append(i)
    print(' '.join(message))

如果在if语句中没有“and”,那么上面的代码可以工作,但是只要我添加“and”,这就是我得到的输出

Enter the sentence: CR
C R

我希望输出为xx。 我怎样才能做到这一点? 谢谢你的帮助


Tags: orandthe方法代码程序messageif
3条回答

条件if((i=='c' or i =='C') and (i =='r' or i=='R')):要求i同时是a(大写与否)CR!所以它总是假的。你知道吗

你不需要循环输入。只需检查字符串是否包含“crap”并替换为“xxxx”:

import re
crap = re.compile(re.escape("crap"), re.IGNORECASE)
message = crap.sub("xxxx", userInput)

如果有多个字符串的列表,可以为每个字符串创建正则表达式,并将其替换为具有特定长度的同一字符串:

import re
message = userInput
for s in forbidden_words:
    word = re.compile(re.escape(s), re.IGNORECASE)
    message = word.sub("x" * len(s), message)

您应该在那里使用or而不是and。但是,对于给定的输入,可以使用以下循环:

if i.lower in ('c', 'r'):
    i = 'x' 

但是这段代码每次看到cr时都只添加x,不管它们是否作为单词"crap"的一部分输入。你知道吗

要检查该单词,不需要迭代userInput,只需对其进行测试:

userInput = str(input("Enter the sentence: "))
if userInput.lower() == "crap":
    message.append('x' * len(userInput))

如果您的userInput是一个空格分隔的单词,那么您需要使用userInput.split()split它,并对每个单词进行测试,从而以迭代方式创建列表。你知道吗


此外,如果您可以编写一个用于过滤噪声的定义良好的规则,比如在file中有限制词列表,然后从中读取,创建一个list,然后检查输入的词是否在该列表中(这可以作为临时解决方案)。你知道吗

相关问题 更多 >