все Python 3unicodedataфункция
unicodedata.digit()
числовые значения
Возвращает значение символа-цифры как int, включая надстрочные и обведённые цифры вроде '²' и '①'.
Синтаксис
unicodedata.digit(chr, default=None, /)
Шире decimal(): '²' здесь 2, и это ровно множество str.isdigit(). Но int() такие символы не принимает, так что проверка isdigit() перед int() пропускает '²' и программа падает. Дроби вроде '½' и римские числа — не цифры: ValueError, их понимает только numeric().
Примеры
import unicodedata
print(unicodedata.digit('²'), unicodedata.digit('①')) # → 2 1
try:
int('²')
except ValueError as e:
print(e) # → invalid literal for int() with base 10: '²'
unicodedata.digit('½') # → ValueError: not a digit
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности