В Python 2 существует различие между типами str
и unicode
.str
- это последовательность байтов, созданная с неизмененными кавычками.Ваш '─'
создает последовательность из 3 байтов, которые отображаются как один символ Юникода;когда вы просите str.center()
центрировать эти байты в поле шириной 5 байт, он добавляет один байт с каждой стороны;при печати вы получаете только 3 символа.
Если вы создаете объект unicode
(с u'─'
или '─'.decode (' utf-8 ')), у вас теперь есть последовательность из 1 юникодасимвол, который будет центрирован путем добавления 2 символов с каждой стороны.
В Python 3 нет этой проблемы, потому что обычные строки представляют собой последовательности символов Юникода.