Получение только текста, а не любых конечных пустых строк из текстового виджета в Python 2.7
Я работаю с Python 2.7 и tkinter.
У меня есть текстовый виджет, который я заполняю строками текста, где каждая строка заканчивается символом "\n" из файла. Текст в виджете "Текст" может быть изменен позже.
Теперь я хочу получить только текст из виджета "Текст" и игнорировать любую конечную пустую строку, которая может присутствовать. Метод get() получит все до конца текстового виджета, включая любые конечные пустые строки, которые могут присутствовать.
Как получить текст, а не завершающие пустые строки?
1 ответ
У текстового виджета нет хорошего способа отфильтровать результаты, которые вы получаете get
. Вы можете получить все, кроме последней новой строки, которая автоматически добавляется tkinter, используя индексend-1c
, но если у вас есть несколько пустых строк в конце, самый простой способ - удалить символы новой строки после получения данных:
data = the_widget.get("1.0", "end-1c").rstrip("\n")
Другой способ - использовать search
метод, идущий в обратном направлении от конца, с регулярным выражением, которое находит первую непустую строку. Затем вы можете получить весь текст до конца этой строки:
index = text.search('^.+', "end", backwards=True, regexp=True)
data = text.get("1.0", f"{index} lineend") if index else ""