Python3 неверно печатает элементы списка

Есть простой список:

tasks = [
    ['Зона 1:\rЗадача 1\r', True], 
    ['Зона 1:\rЗадача 2\r', True], 
    ['Зона 1:\rЗадача 3\r', True], 
    ['Зона 2: \rЗадача 1\r', True], 
    ['Зона 2: \rЗадача 2\r', True], 
    ['Зона 2: \rЗадача 3', True]
]

При выполнении следующих трех инструкций печатаются совсем разные данные:

for task in tasks:
    print(task)
    print(task[0])
    print(task[1])

Терминал:

['Зона 1:\rЗадача 1\r', True]
Задача 1
True
['Зона 1:\rЗадача 2\r', True]
Задача 2
True
['Зона 1:\rЗадача 3\r', True]
Задача 3
True
['Зона 2: \rЗадача 1\r', True]
Задача 1
True
['Зона 2: \rЗадача 2\r', True]
Задача 2
True
['Зона 2: \rЗадача 3', True]
Задача 3
True

Почему print(task[0]) обрезает строку перед печатью? Может ли это как-то быть связано с тем, что я использую фреймворк Django или тем, что список - результат преобразования json-строки?


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

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

Почему print(task[0]) обрезает строку перед печатью?

Потому что в строке присутствует символ возврата каретки \r (CARRIAGE RETURN).

Описание из Wikipedia:

Перемещает позицию печати в крайнее левое положение (исходно — без перевода на следующую строку).


Могу предположить, что Вы хотели использовать перевод строки \n.

→ Ссылка