Python Glossary English

все Python 3unicodedataфункция

unicodedata.east_asian_width()

свойства символов

Возвращает ширину символа по восточноазиатской классификации: 'W' и 'F' занимают две клетки терминала, 'Na' и 'H' — одну, 'A' — неоднозначно.

Синтаксис

unicodedata.east_asian_width(chr, /)

len() считает кодовые точки, а не экранную ширину: '中文' — это 2 символа и 4 клетки, поэтому выравнивание ljust() с иероглифами и эмодзи разъезжается. Кириллица — 'A' (неоднозначная): в западном терминале одна клетка, в китайском или японском — две. Простая оценка ширины: 2 для 'W' и 'F', 1 для остального.

Примеры

import unicodedata
print([unicodedata.east_asian_width(c) for c in 'a中й'])  # → ['Na', 'W', 'A']
def width(text):
    return sum(2 if unicodedata.east_asian_width(c) in 'WF' else 1 for c in text)
print(len('中文ab'), width('中文ab'))  # → 4 6

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности