使用python编辑文件中的文本

使用python编辑文件中的文本,python,Python,我有一个文本文件(file1.txt),其中包含这样的模式 **** **** **** **** 我想用**替换它。我可以在linux中使用类似于sed-I的/\*{4}/**/'file1.txt的命令来进行替换。但我想在Windows环境中使用python脚本执行此操作 import re with open ('file1.txt') as fil1: for line in fil1: re.sub('^\*{3}[*]*','**',line) 但该脚

我有一个文本文件(file1.txt),其中包含这样的模式

****
****
****
****
我想用
**
替换它。我可以在linux中使用类似于sed-I的/\*{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中进行就地文件替换。

您试图编辑文件嵌入,但您以读取模式打开文件,因此无法对其进行写入

此外,您正在调用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 

什么方式不起作用?问题是你没有写任何东西。您只是从文件中读取变量行并更改变量。可能的副本无法在文件中获得任何类型的“就地”更改。你只能读和写。所有这些都必须显式地完成,它会像文件的最后一行一样插入空格。你知道如何摆脱它吗?@dfs3w你的输入文件可能有。检查我的编辑?如果有帮助,请将其标记为已接受:)