Python: как печатать на одной строке, очищая предыдущий текст?

Вопрос:В Python вы можете печатать в той же строке, используя r, чтобы вернуться к началу строки. Это хорошо работает для индикаторов выполнения или увеличения счетчиков precentage, например: Печать на Python в той же строке Однако при печати строк, которые могут уменьшаться по длине, это оставляет текст предыдущей строки там, например: import sys for t in

Вопрос:

В Python вы можете печатать в той же строке, используя r, чтобы вернуться к началу строки.

Это хорошо работает для индикаторов выполнения или увеличения счетчиков precentage, например: Печать на Python в той же строке

Однако при печати строк, которые могут уменьшаться по длине, это оставляет текст предыдущей строки там, например:

import sys for t in [‘long line’, ‘%’]: sys.stdout.write(t + ‘r’) sys.stdout.write(‘n’)

Выводит текст терминала как: %ong line.

Каков наилучший способ записи более короткой строки после более длинной при печати в одну строку?

Ответ №1

Я думаю, что самый простой способ сделать это – написать пробелы над символами. Для этого было бы неплохо написать столько пробелов, сколько нужно для последней строки.
Пример:

previousLength = 0 for t in [«long line», «%»]: print(» » * previousLength, end=»r») print(t, end=»r») previousLength = len(t) print(«n») Ответ №2

Наряду с r необходима ansi-последовательность 33[K – стирайте до конца строки.

Этот код работает так, как ожидалось.

import sys for t in [‘long line’, ‘%’]: sys.stdout.write(‘33[K’ + t + ‘r’) sys.stdout.write(‘n’)

Оцените статью
Добавить комментарий