使用python编辑文件中的文本

时间:2017-07-23 18:27:20

标签: python

我有一个包含这样的模式的文本文件(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中替换文件。

1 个答案:

答案 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