Vasudha Dixit Ответов: 1

Как заменить все вхождения строки в файле, кроме первого вхождения, используя Python?


Вот содержание моего файла

batch_rollback.txt
------------------------------
pyt_batch_id :- pyt_batch_id

Здесь мультилинии из
предложения SQL
основной pyt_batch_id
задача
заменить pyt_batch_id
из его второго
возникновение pyt_batch_id
-----------------------------------------

Я хочу заменить все вхождения pyt_batch_id любым числом, но не первым вхождением.

Я попробовал нижеприведенный метод, и он работает так, как ожидалось, но я не думаю, что это лучший подход.

выход :-

pyt_batch_id :- 123456

Здесь мультилинии из
предложения SQL
главный 123456
задача
заменить 123456
из его второго
123456 происшествие


Не мог бы кто-нибудь предложить другие альтернативные методы?

Что я уже пробовал:

s = open("BATCH_ROLLBACK.txt").read()
s = s.replace('pyt_batch_id', '123456')
f = open("BATCH_ROLLBACK.txt", 'w')
f.write(s)
f.close()

f2 = open('BATCH_ROLLBACK.txt', 'r')
contents = f2.read().replace('123456', 'pyt_batch_id',1)
f2.close()
f2 = open('BATCH_ROLLBACK.txt', 'w')
f2.write(contents)
f2.close()

1 Ответов

Рейтинг:
9

Richard MacCutchan

Нет необходимости писать промежуточный файл, попробуйте:

oldtext = open("BATCH_ROLLBACK.txt").read()
oldtext = oldtext.replace('pyt_batch_id', '123456')
newtext = oldtext.replace('123456', 'pyt_batch_id',1)

f2 = open('NEWBATCH_ROLLBACK.txt', 'w')
f2.write(newtext)
f2.close()