我正在尝试编写一个从一个文件读取输入的代码,用“xxxx”替换所有四个字母的单词,然后将其写入另一个文件。我知道这个问题已经出现在网站上,我已经用谷歌搜索了其他问题,但它们都是一样的。我也玩过代码,但仍然无法找到解决方案。
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 个带有标点符号的单词,将单词拆分成一个列表以更改四个字母的单词,然后将它们按原始顺序重新组合在一起,只是替换了单词。所以“我喜欢工作”。最终会是“我 xxxx 到 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()
所以在这种情况下,如果我有一个单词列表,例如“Frog, boot, cat, dog”。它会返回“Frog, boot, xxxx xxxx”
我还找到了另一个使用正则表达式的解决方案,但我还是个新手,真的无法理解那个解决方案。任何帮助,将不胜感激。