0
def censor2(filename):
    infile = open(filename,'r')
    contents = infile.read()
    contentlist = contents.split()
    print (contents)
    print (contentlist)
    for letter in contentlist:
        if len(letter) == 4:
            print (letter)
            contents = contents.replace(letter,'xxxx')
    outfile = open('censor.txt','w')
    outfile.write(contents)
    infile.close()
    outfile.close()

此代码适用于 Python。它接受一个文件'example.txt',读取它并循环使用字符串'xxxx'替换所有4个字母单词并将其输出到一个名为censored.txt的新文件中(保持原始格式!)。

我使用了替换功能并找到了要替换的单词。但是,单词“abcd”被替换,下一个单词“abcde”变成了“xxxxe”

如何防止“abcde”被更改?

我无法让下面的例子工作,但在使用 re.sub 模块后,我发现下面的代码只能替换 4 个字母的单词而不是 5 个字母的单词。

contents = re.sub(r"(\b)\w{4}(\b)", r"\1xxxxx\2", contents)
4

2 回答 2

3

怎么样:

re.sub(r'\babcd\b','',my_text)

这将要求它在两边都有单词边界

于 2013-04-24T00:17:45.683 回答
1

这是正则表达式可以提供帮助的地方。你会想要这样的东西:

import re
...
contents = re.sub(r'\babcd\b', 'xxxx', contents)
....

是“\b单词边界”标记。它匹配从单词到空白字符、标点符号等的变化。

您需要r''正则表达式模式的样式字符串,以便反斜杠不会被视为转义字符。

于 2013-04-24T00:20:20.407 回答