Найти - Пользователи
Полная версия: Заменить строку одну строку в файле другой строкой
Начало » Python для новичков » Заменить строку одну строку в файле другой строкой
1
VIRTOK
Приветствую.
Прошу показать инструмент работы с строками в питон , который может найти и заменить строку по шаблону , не учитывая полного содержимого в строке.
Нужно в файле заменить одну строку другой строкой.
Поиск заменяемой строки нужно производить используя шаблон, по той причине что заменяемая строка имеет постоянно изменяющиеся значения.
py.user.next
Приведи пример замены.
PEHDOM
VIRTOK
Поиск заменяемой строки нужно производить используя шаблон, по той причине что заменяемая строка имеет постоянно изменяющиеся значения.
ну так re ?
https://docs.python.org/3/library/re.html
https://tproger.ru/translations/regular-expression-python/
VIRTOK
Прошу помочь и привести пример шаблона с помощью которого заменить строку.
Есть файл с SQL скриптом.
 ...
INSERT INTO Product_D VALUES ('B', 1158, DEFAULT);
COMMIT;

В конце файла есть 2 строчки которые нужно заменить
 INSERT INTO Product_D VALUES ('B', 1158, DEFAULT);
COMMIT;

Проблема в том что в середине строки
 INSERT INTO тут могут быть разные значения ;

py.user.next
VIRTOK
Прошу помочь и привести пример шаблона с помощью которого заменить строку.
Напиши, какие строки были до замены и какие стали строки после замены.

VIRTOK
В конце файла есть 2 строчки которые нужно заменить
Заменить на что?
FishHook
py.user.next
Заменить на что?
- Фу! Ржевский, вы вообще носки меняете?
- Конечно, меняю! На водку!
PEHDOM
VIRTOK
Проблема в том что в середине строки

INSERT INTO тут могут быть разные значения ;
тогда вам не нужно re достаточно метода строки startwith.
 in_data =['Это непонятная дичь',
          'INSERT INTO тут могут быть разные значения ;',
          'COMMIT;']
find_prefix = 'INSERT INTO'
replace_srt = 'тут может быть все что угодно;'
for string in in_data:
    if string.startswith(find_prefix):
        out_string = '{} {}'.format(find_prefix, replace_srt)
    else:
         out_string = string
    print (out_string)
>>>
Это непонятная дичь
INSERT INTO тут может быть все что угодно;
COMMIT;
>>> 
py.user.next
PEHDOM
тогда вам не нужно re достаточно метода строки startwith.
Он там пишет
VIRTOK
В конце файла есть 2 строчки которые нужно заменить
То есть эти строки ещё должны в конце файла стоять. А если они в середине стоят, то не надо заменять.

Однопроходный алгоритм можно сделать по принципу скользящего окна.
PEHDOM
py.user.next это проф.деформация , ты забываешь что имеешь дело не с “программистом” а с “пользователем” который не умеет свои мысли структурировать и выражать четко и однозначно. Я подозреваю что “В конце файла есть 2 строчки которые нужно заменить” означает не то что такие же строки есть и в середине, а то что они есть только в конце. Но я, конечно, могу и ошибаться.
py.user.next
PEHDOM
Я подозреваю что “В конце файла есть 2 строчки которые нужно заменить” означает не то что такие же строки есть и в середине, а то что они есть только в конце. Но я, конечно, могу и ошибаться.
Не, ты ему напишешь такую программу, а он придёт потом и скажет “у меня там в середине строчки, они тоже заменяются теперь, а мне нужно, чтобы только в конце”. Так ты ему будешь писать вторую программу.

PEHDOM
это проф.деформация
Это опыт. Точно так же я у него спрашиваю “на что заменить?” не просто так. Потому что дальше он скажет “а мне надо не просто заменить, оказывается, я теперь понял, пришло типа прозрение, а мне ещё кусочки оттуда выдирать надо”. Чтобы 100500 программ ему не писать, из которых ему нужна только 100501-ая, я сначала у него всё выясняю.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB