Как мне предотвратить удаление лишних строк line.replace?

#python-3.x

#python-3.x

Вопрос:

Я хочу удалить строку в файле, но когда я выполняю функцию line.replace, она заменяет то, что не должно быть заменено.

Я попробовал line.replace удалить строку «SCOPE1EXPRESSION», но она удалила дополнительные строки, которые я хочу сохранить.

Входной файл выглядит следующим образом:

 SCOPE1EXPRESSION
InDifferentialPairClass'DIFF100'
TOPLAYER_PREFGAP
6.2992mil
BOTTOMLAYER_PREFGAP
6.2992mil
SCOPE1EXPRESSION
InDifferentialPairClass'DIFF90'
TOPLAYER_PREFGAP
4.4882mil
BOTTOMLAYER_PREFGAP
4.4882mil
  

Затем я пытаюсь line.replace («SCOPE1EXPRESSION»,»») удалить его:

 '''
infile = open(('All_Rules1.txt'),'r')
outfile = open('All_Rules2.txt','w ')
for line in infile:
    line = line.replace("SCOPE1EXPRESSION","")
    if pattern.search(line):
        outfile.write(line)
infile.close()
outfile.close()
sys.stdout.flush()
'''
  

и в результате получается:

 InDifferentialPairClass'DIFF100'
TOPLAYER_PREFGAP
BOTTOMLAYER_PREFGAP
InDifferentialPairClass'DIFF90'
TOPLAYER_PREFGAP
BOTTOMLAYER_PREFGAP
  

Как я могу предотвратить удаление лишних строк?

Я ожидал, что будет удалено только «SCOPE1EXPRESSION».

Комментарии:

1. Я не думаю, что это заменяет его, я думаю, что удаляемые лишние строки не проходят if pattern.search(line) тест и не записываются в выходной файл.

2. Вы абсолютно правы. Я использовал функцию pattern.search (строка) для создания первого файла (из очень большого файла), но не удалил ее при выполнении точных настроек. Спасибо!

3. Картер, также, когда у меня есть несколько строк, содержащих одно и то же слово, но увеличенное число, такое как test1, test2, test3… есть ли способ заменить все строки (полностью), в которых есть «test»? Я попробовал test *, но это не сработало.

4. Ознакомьтесь с re.sub