Поправить программу поиска и подсветки нескольких фрагментов текста в исходном тексте

pums

Новичок
Пользователь
Авг 1, 2020
55
0
6
Программа работает правильно в том случае, если в анализируемом тексте нет пустых строк. Надо переделать, чтобы пустые строки не мешали ей анализировать текст и чтобы в выводе эти пустые строки не были удалены. Ещё косяк, что в выводе, если вводить запрос в нижнем регистре, а в анализируемом тексте он в верхнем, то в выводе будет в нижнем (видно на скриншоте, с этим в принципе можно мириться).
Python:
import re
def text_editor():
    print("Введите текст (для окончания ввода введите пустую строку (нажмите два раза Enter)):")
    text = ""
    while True:
        line = input()
        if line:
            text += line + "\n"
        else:
            break
    search1 = input("Введите первый фрагмент для поиска: ")
    search2 = input("Введите второй фрагмент для поиска: ")
    # Поиск и подсветка первого фрагмента
    highlighted_text = re.sub(re.escape(search1), f"\033[1;31m{search1}\033[0m", text, flags=re.IGNORECASE)
  
#    highlighted_text = re.sub(re.escape(search1), f"\033[1;31m{search1}\033[0m", text, flags=re.IGNORECASE)
    # Поиск и подсветка второго фрагмента
    highlighted_text2 = re.sub(re.escape(search2), f"\033[1;32m{search2}\033[0m", highlighted_text, flags=re.IGNORECASE)
    print("Результат:")
    print(highlighted_text2)
text_editor()

С таким текстом правильно работает:
Эта тема требует уже другого названия - как приделать к амперметру покупную зарядк
Да и чтобы все сразу и по мановению волшебной палочки

А с таким нет:
Эта тема требует уже другого названия - как приделать к амперметру покупную зарядк

Да и чтобы все сразу и по мановению волшебной палочки

Выражение f использует специальный форматированный текст, называемый ANSI Escape Sequence, для подсветки текста.
ANSI Escape Sequence - это последовательность символов, используемых для управления выводом на терминал или другую консоль. Они начинаются с символа \033, за которым следуют один или несколько кодов, определяющих действие, которое должно быть выполнено. В данном случае код 1;31m указывает на то, что текст должен быть выведен красным цветом. Код 0m указывает на то, что все текущие форматы должны быть удалены.
 

Вложения

  • Image 3.png
    Image 3.png
    103,2 КБ · Просмотры: 5
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 668
475
83
ну сделайте проверку на пустую строку...
 

pums

Новичок
Пользователь
Авг 1, 2020
55
0
6
Нужно, чтобы пустая строка в выводе тоже была.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 668
475
83
Нужно, чтобы пустая строка в выводе тоже была.
тоже самое, сделайте проверку на пустую строку...
 

robisho

Активный пользователь
Пользователь
Окт 19, 2020
151
26
28
Нужно, чтобы пустая строка в выводе тоже была.
ну так вы её не удаляйте при нахождении, а просто пропускайте. если в цикле - то continue
 

Форум IT Специалистов