あるファイルから入力を読み取り、4 文字の単語すべてを「xxxx」に置き換え、それを別のファイルに書き込むコードを作成しようとしています。この問題はすでにサイトに掲載されていることを知っており、Google で他の問題を見つけましたが、それらはすべて同じです。私もコードをいじりましたが、それでも解決策に到達できませんでした。
def censor(filename):
'string ==> None, creates file censored.txt in current folder with all 4 letter words replaces with string xxxx'
import string
infile = open(filename,'r')
infile2 = open('censored.txt','w')
for word in infile:
words = word.split()
for i, word in enumerate(words):
words.strip(string.punctuation)
if len(word) == 4:
words[i] == 'xxxx'
infile2.write(words[i])
これは機能しないコードの混乱であることはわかっていますが、何でも投稿する価値があると考えました。テキストから句読点を削除して、句読点のある 4 文字の単語を 5 としてカウントしないようにし、単語をリストに分割して 4 文字の単語を変更し、それらを元の順序で結合し直すというアイデアがありました。言葉を入れ替えただけ。だから「働くのが好き」です。「I xxxx to xxxx」になります。
また、このサイトの別の同様の投稿を見て、機能する解決策を見つけましたが、句読点の問題には対処していません.
def maybe_replace(word, length=4):
if len(word) == length:
return 'xxxx'
else:
return word
def replacement(filename):
infile = open(filename,'r')
outfile = open('censored.txt','w')
for line in infile:
words = line.split()
newWords = [maybe_replace(word) for word in words]
newLine = ' '.join(newWords)
outfile.write(newLine + '\n')
outfile.close()
infile.close()
この場合、「カエル、ブーツ、猫、犬」のような単語のリストがあるとします。「カエル、ブーツ、xxxx xxxx」を返します
正規表現を使用した別の解決策も見つけましたが、私はまだ初心者であり、その解決策を本当に理解できません。どんな助けでも大歓迎です。