Получение только текста, а не любых конечных пустых строк из текстового виджета в 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 ""
Другие вопросы по тегам