Python 如何替换以前写入的文本文件中的文本
我有一个文件如下 project1: analyzeFile c1 class1 project1: analyzeFile c1 class1 project1: analyzeFile c1 class1 project1: analyzeFile c1 class1 project1: analyzeFile c1 class1Python 如何替换以前写入的文本文件中的文本,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的副本
如何做到这一点我是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()