Лучший способ узнать, можно ли преобразовать строку в int, - просто набрать try
it:
s = '⒍'
try:
num = int(s)
except ValueError:
# handle it
Конечно, вы можете попытаться определить правильный способ проверки строки заранее, но почему? Если вы хотите использовать правило "все, что int
принимает", просто используйте int
.
Если вы хотите преобразовать что-то, что является цифрой, но не десятичной, используйте модуль unicodedata
:
s = '⒍'
num = unicodedata.digit(s) # 6
num = unicodedata.numeric(s) # 6.0
num = unicodedata.decimal(s) # ValueError: not a decimal
Запись символа DIGIT SIX FULL STOP
в базе данных имеет цифровые и числовые значения, несмотря на то, что она является Number, Other
, а не Number, Decimal Digit
(и, следовательно, несовместима с int
).