-5

こんにちは私は浄化プログラムに取り組んでいます。以前に同様のコードを投稿しましたが、それらはすべて機能します。今回は別のアプローチを試みています。

これは私が欲しいものの例です

入力 = これはがらくたです 出力 = これは 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として欲しいところ。どうすればそれを達成できますか? お手伝いありがとう

4

3 に答える 3

3

入力をループする必要はありません。文字列に「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)
于 2013-07-21T18:25:15.833 に答える
3

(大文字かどうか)と!の両方である条件if((i=='c' or i =='C') and (i =='r' or i=='R')):要求。したがって、それは常に偽です。 iCR

于 2013-07-21T18:10:48.713 に答える
1

orそこの代わりに使用する必要がandあります。ただし、特定の入力に対して、次のループを使用できます。

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

ただし、このコードは、またはが表示されるたびに追加するだけでx、単語の一部として入力されているかどうかは関係ありません。cr"crap"

その単語を確認するには、 を反復処理する必要はありませんuserInput。それに対してテストするだけです。

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

あなたuserInputがスペースで区切られた単語である場合は、splitを使用userInput.split()して単語ごとにテストし、リストを繰り返し作成する必要があります。


さらに、ノイズをフィルタリングするための明確に定義されたルールを記述できるとよいでしょう。たとえば、制限された単語のリストを に格納しfile、そこから読み取って を作成しlist、入力された単語がそのリストに含まれているかどうかを確認します (これは可能です)。一時的な解決策として機能します)。

于 2013-07-21T18:10:56.957 に答える