Получить "фактическую" длину строки в символах Юникода
Например, для символа типа "✮" (\xe2\x9c\xae) могут быть другие, такие как "Σ", "д" или "Λ" ). Я хочу найти "фактическое" длина, которую принимает символ при печати на экране
например
len("✮")
len("\xe2\x9c\xae")
оба возвращают 3, но это должно быть 1
Ответ 1
Вы можете попробовать следующее:
unicodedata.normalize('NFC', u'✮')
len(u"✮")
UTF-8 - это кодировка юникода, которая использует более одного байта для специальных символов. Проверьте unicodedata.normalize()
Вы ищете ширину рендеринга из текущего контекста вывода. Для графических пользовательских интерфейсов обычно существует метод прямого запроса этой информации; для текстовых сред все, что вы можете сделать, это угадать, что, вероятно, сделает механизм совместимости рендеринга, и надеемся, что фактический движок соответствует вашим ожиданиям.