Как в Notepad++ найти и заменить значения в строках. Или в Python

Есть текстовый файл: userbouquet._5.tv В нём есть много строк - одна из них пример:

#SERVICE 4097:0:1:154:521:0:0:0:0:http%3a//51.195.44.53%3a8081/tv/ostros/playlist.m3u8:Остросюжетное HD

Постоянное в этой строке только название канала: :Остросюжетное HD

Это всегда меняется: 4097:0:1:154:521:0:0:0:0:http%3a//51.195.44.53%3a8081/tv/ostros/playlist.m3u8

Постоянно присутствует этот интервал: 4097 ---- http

Нужно найти в строку в этом файле: userbouquet._5.tv:

  1. По названию канала: :Остросюжетное HD Я ищу эту строку так . Найти: 4097(.*?)http(.*):Остросюжетное HD

  2. Мне нужно в начале строки в этом интервале 4097 ---- http Этот кусок строки :0:1:154:521:0:0:0:0: это всегда бывает разное. Заменить на постоянное исходное значение из другого файла: EPG.txt :0:1:267:521:0:0:0:0:

Всё остальное в найденной строке не должно изменится.

Как сделать эту замену ?


Ответы (1 шт):

Автор решения: NykSu

Вот кусок кода который делает поиск и замену в искомых строках. Для него надо добавить чтение строк из файла - надеюсь справитесь с чтением файла (если что- напишите, тогда я укажу что дописать для чтения (записи) файла.

итак, вот сама функция:

import re

def TestAndRemakeString(replasement, strsource):
    res = ''
    if re.search(r'.*4097.*http.*:Остросюжетное HD', strsource):
        ind_2 = strsource.index('http')
        ind_1 = strsource.index('4097')
        res = strsource[:ind_1 + 4:] + replasement + strsource[ind_2::]        
    return res

Вот как пользоваться этой функцией:

# str_lines - список строк для анализа и замены. формируем его из файла.
str_lines = ['#SERVICE 4097:0:1:154:521:0:0:0:0:http%3a//51.195.44.53%3a8081/tv/ostros/playlist.m3u8:Остросюжетное HD']
out_lines = []
for line in str_lines:
    result = TestAndRemakeString('-ЗДЕСЬ_УКАЗЫВАЕМ_НА_ЧТО_ЗАМЕНЯТЬ_БУДЕМ-', line)
    if result:
        # в result - строка уже с изменениями. далее делаем то, что нужно сделать с этой строкой 
        print(result)
        # например записываем в новый список:
        out_lines.append(result)
    else:
        # значит в line строка не содержащая искомой фразы здесь 
        print('Строка без изменений. Нет искомой фразы.')
        # например записываем в новый список:
        out_lines.append(line)

Собственно далее уже вы решаете что делать с результатом.

→ Ссылка