我想编写一个函数,它将文件名作为字符串,打开,读取,然后写入一个新文件,用“XXXX”更改文件中的每个4个字母的单词。
到目前为止,我有:
def change(filename):
infile = open(filename,'r')
outfile = open('changed.txt', 'w')
l = infile.read()
infile.close()
x = l.split()
for word in x:
if len(word) == 4:
outfile.replace(word,'XXX')
我认为我在if语句中搞乱输出,但我不确定如何解决这个问题。
在我的文件中(我称之为'example.txt')我有:“这个文件包含三个四个字母的单词”
在我的输出文件“changed.txt”中我应该得到:“XXXX XXXX包含三个XXXX字母”
答案 0 :(得分:0)
import re
re.sub('([^\w]|^)\w{4}(?=[^\w]|$)', r'\1XXXX', input)
应该这样做。
编辑:右分隔符是预测
答案 1 :(得分:0)
一个建议如何实现您想要做的事情:
import re
def change(filename):
with open(filename) as infile, open("changed.txt", "w") as outfile:
text = infile.read()
outfile.write(re.sub(r"\b\w{4}\b", "XXXX", text))
这假设(作为简化)“单词”是由四个字母数字字符组成的序列,由非字母数字字符包围。如果这不够具体(它与2001
匹配,则不匹配böse
并且会将they're
更改为XXXX're
),请与我们联系。
主要工作由正则表达式\b\w{4}\b
完成,这意味着“匹配word boundary,然后是四个字母数字字符,然后是字边界”。