Если ты о моем "решении", то это скорее была шутка (хотя решение и рабочее). Тебе нужно что-то вроде:
def remove_string(filename, string):
with open(filename) as fd:
for line in fd:
line = line.rstrip('\n');
if line != string:
print line
Но эта функция выдает результат на стандартный вывод, не удаляя ничего из файла. Если надо удалить из файла, то можно либо использовать временный файл вроде:
import os
def remove_string2(filename, string):
tempname = filename + '.temp' # os.tempnam() gives warning
with open(filename) as fin: # python 2.6
with open(tempname, 'w') as fout: # compatible
for line in fin:
line = line.rstrip('\n');
if line != string:
fout.write(line + '\n')
os.rename(tempname, filename)
Или прочитать весь файл в память целиком, обработать и перезаписать результат в исходный файл:
def remove_string3(filename, string):
rst = []
with open(filename) as fd:
t = fd.read()
for line in t.splitlines():
if line != string:
rst.append(line)
with open(filename, 'w') as fd:
fd.write('\n'.join(rst))
fd.write('\n') # with join we lose the last newline char