使用fileinput.FileInput
,用inplace=True
.打印行将用作每行的替换字符串.
myfile = fileinput.FileInput("inputRegex.txt", inplace=True) for line in myfile: line = re.sub(r"[+-]? *(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?", "foundValue", line.rstrip()) print(line)
UPDATE
re.sub
可以接受作为替代的功能.它将使用match对象调用,函数的返回值用作替换字符串.
以下是稍微修改的版本以使用捕获的组(用于替换功能).
line = re.sub(r"([+-]? *)(\d+(?:\.\d*)?|\.\d+)([eE][+-]?\d+)?", lambda m: m.group(1) + re.sub('(\..{4}).*', r'\1', m.group(2)) + (m.group(3) or ''), line.rstrip())