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)
答案 0 :(得分:3)
怎么样:
re.sub(r'\babcd\b','',my_text)
这将要求它在任何一方都有字边界
答案 1 :(得分:1)
这是正则表达式有用的地方。你会想要这样的东西:
import re
...
contents = re.sub(r'\babcd\b', 'xxxx', contents)
....
\b
是“字边界”标记。它匹配从单词到空格字符,标点符号等的变化。
您需要正则表达式模式的r''
样式字符串,以便不将反斜杠视为转义字符。