我有一个如下文件
project1: analyzeFile c1 class1 project1: analyzeFile c1 class1 project1: analyzeFile c1 class1 project1: analyzeFile c1 class1 project1: analyzeFile c1 class1
并且替换的文本应为
project1: abcd xyz sunny project1: analyze rty salman project1: analyzeFile1 c2 class2
那只是内部参数应该改变。操作是(.txt)格式的同一文件
我的代码是
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"
该如何做?我是python新手
答案 0 :(得分:0)
看看str.replace()
string.replace(s,old,new [,maxreplace])
返回字符串s的副本,并将所有出现的子字符串old替换为new。如果给出了可选参数maxreplace,则替换第一个出现的maxreplace。
在这里,您应该将文件读入内存,然后调用.replace("analyzeFile", "abcd")
(第一个)。
希望这会有所帮助
答案 1 :(得分:0)
最好不要同时对文件进行读写(为了节省内存,非常大的文件除外)。当替换字符串的长度不同时,您可能会覆盖尚未读取的文本。这很棘手。
相反,请先读取内存中的所有内容,然后将所有行放入列表中(也可以使用一个大字符串)。然后修改这些行,最后用新的行覆盖文件。
类似这样的东西:
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()