我有一个包含这样的模式的文本文件(file1.txt)。
****
****
****
****
我想用**
替换它。我可以在linux中使用像sed -i 's/\*{4}/**/' file1.txt
这样的命令来替换它。但我想在Windows环境中使用python脚本执行此操作。
import re
with open ('file1.txt') as fil1:
for line in fil1:
re.sub('^\*{3}[*]*','**',line)
但是此脚本似乎并未在文件中的****
替换**
。如何在python中实现文件替换(类似于sed
命令)?
编辑:
我不想逐行读取文件,替换文本并将行写入另一个文件。我想做一些像sed -i
这样的事情来使用正则表达式在python中替换文件。
答案 0 :(得分:0)
您正在尝试编辑文件inlas,但是您以读取模式打开文件,因此无法写入。
此外,您正在调用re.sub,它返回一个您没有捕获并尝试写入的新字符串。
使用内置函数在内部编辑文件具有挑战性,但使用fileinput
模块可以轻松编写文件:
import fileinput
with fileinput.FileInput('file1.txt', inplace=True) as fil1:
for line in fil1:
text = re.sub('^\*{3}[*]*','**', line.rstrip()).strip()
if text:
print(text) # inside the `with` clause, print writes to the file automatically