# -*- coding: utf-8 -*- asd=("йцу", "ЫПРОИЬТБ", "ВАПпрпА АРИ") for x in asd: txt="{:*<20s}".format(x) print txt, " len() =",len(txt), " symbols", type(txt)
из списка берутся слова с русскими буквами и форматируются (делается левое выравнивание и дополнение до 20-ти символов). Далее происходит печать полученного текста. Далее приводится результат:
йцу************** len() = 20 symbols <type ‘str’>
ЫПРОИЬТБ**** len() = 20 symbols <type ‘str’>
ВАПпрпА АРИ len() = 21 symbols <type ‘str’>
из чего видно, что длина слова по символам не соответствует расчетному значению метода len().
Данный косяк встречается с буквами не входящими в кодировку ASCII . В чем проблема, как можно решить? Мне нужно выводить на печать таблицу с ровными столбцами, для этого и использую дополнение длины строки. В реальных условиях из-зи данного дефекта ровные столбцы не получаются даже при использовании моноширинного шрифта.