如何使用替换输出更改文件?

时间:2013-06-02 18:01:13

标签: python python-3.x

我想编写一个函数,它将文件名作为字符串,打开,读取,然后写入一个新文件,用“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字母”

2 个答案:

答案 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,然后是四个字母数字字符,然后是字边界”。