Python 如何替换以前写入的文本文件中的文本

Python 如何替换以前写入的文本文件中的文本,python,Python,我有一个文件如下 project1: analyzeFile c1 class1 project1: analyzeFile c1 class1 project1: analyzeFile c1 class1 project1: analyzeFile c1 class1 project1: analyzeFile c1 class1 如何做到这一点我是python新手请看一下str.replace() string.replace(s,旧的,新的[,maxreplace]) 返回字符串s的副本

我有一个文件如下

project1: analyzeFile c1 class1 project1: analyzeFile c1 class1 project1: analyzeFile c1 class1 project1: analyzeFile c1 class1 project1: analyzeFile c1 class1
如何做到这一点我是python新手

请看一下
str.replace()

string.replace(s,旧的,新的[,maxreplace])

返回字符串s的副本,其中所有出现的子字符串old均替换为new。如果给定可选参数maxreplace,则替换第一个maxreplace引用

在这里,您应该将文件读入内存,并调用
.replace(“analyzeFile”,“abcd”)
(第一个)


希望这有助于

更好不要同时写入和读取文件(非常大的文件是例外,以节省内存)。如果替换字符串的长度不同,则可能会覆盖尚未读取的文本。这很棘手

相反,首先读取内存中的所有内容,然后将所有行放入列表中(也可以是一个大字符串)。然后修改行,最后用新行覆盖文件

大概是这样的:

se =  "C:\\Users\\ishaan_sathe\\Desktop\\{}.txt".format(tt)

reader = open(se , 'r+')
list_of_lines = reader.read().splitlines()
for line_number, line in enumerate(list_of_lines):
    for za in checked_list:
        if ':' in line:
            nameqw = line.partition(":")
            nameqw  = nameqw[0]
            if tt == nameqw:
                list_of_lines[line_number + 1] = str(za)
reader.close()

writer = open(se, 'w+')
for line in list_of_lines:
    writer.write(line)
writer.close()

在替换的文本中,一些相同的字符串(如
analyzeFile
)被替换为不同的字符串(
abcd
analyze
analyzeFile1
)。所以问题是这些替换字符串来自何处,根据什么规则应该替换原始字符串?我有一个列表,列出了meI存储的其他复选框中的字符串。我知道这一点,但我不知道将写入文件中的内容。我只需要将第一部分替换为另一部分。意思是我不知道“AnalyzeFile”是否会出现,或者现在你为什么不知道文件中有什么?你在问题中提供了文件!?如果第一个参数不存在,str.replace就可以了。我只是出于理解的目的,在GUI复选框的帮助下,我正在写入一个文件,所以我不知道复选框中会选择什么。如果不知道字符串是什么,则无法替换字符串。好吧,如果你只是删除它并写一个新的,那将破坏输入
se =  "C:\\Users\\ishaan_sathe\\Desktop\\{}.txt".format(tt)
writer1 = open(se , 'a+')
for lines in writer1:
    print lines
    for za in checked_list:
        if ':' in lines :
            nameqw = lines.partition(":")
            nameqw  = nameqw[0]
            print nameqw[0]
            if tt == nameqw:
                line1 = writer1.next()
                print line1 , "line10000000000"
                path = line1.replace(line1 , str(za))
                writer1.write(path)
                print path , "hey"
se =  "C:\\Users\\ishaan_sathe\\Desktop\\{}.txt".format(tt)

reader = open(se , 'r+')
list_of_lines = reader.read().splitlines()
for line_number, line in enumerate(list_of_lines):
    for za in checked_list:
        if ':' in line:
            nameqw = line.partition(":")
            nameqw  = nameqw[0]
            if tt == nameqw:
                list_of_lines[line_number + 1] = str(za)
reader.close()

writer = open(se, 'w+')
for line in list_of_lines:
    writer.write(line)
writer.close()