Функция python isdigit () возвращает true для символа без цифры u '\ u2466'

Я сталкиваюсь с странной проблемой, связанной с функцией python isdigit.

Например:

>>> a = u'\u2466' >>> a.isdigit() Out[1]: True >>> a.isnumeric() Out[2]: True 

Почему этот символ является цифрой?

Любой способ сделать это возвращение False вместо этого, спасибо?


Изменить. Если я не хочу рассматривать его как цифру, то как отфильтровать его?

Например, когда я пытаюсь преобразовать его в int:

 >>> int(u'\u2466') 

Затем произошел UnicodeEncodeError .

3 Solutions collect form web for “Функция python isdigit () возвращает true для символа без цифры u '\ u2466'”

U + 2466 – CIRCLED DIGIT SEVEN (⑦), так что да, это цифра.

Если ваше определение того, что является цифрой, отличается от определения Консорциума Unicode , вам, возможно, придется написать свой собственный метод isdigit() .

Изменить. Если я не хочу рассматривать его как цифру, то как отфильтровать его?

Если вас интересуют только цифры ASCII 09 , вы можете сделать что-то вроде:

 In [4]: s = u'abc 12434 \u2466 5 def' In [5]: u''.join(c for c in s if '0' <= c <= '9') Out[5]: u'124345' 

Если вы собираетесь конвертировать что-то в int вам нужно isdecimal а не isdigit .

Обратите внимание, что «decimal» – это не только 0, 1, 2, … 9, есть количество символов, которые могут быть интерпретированы как десятичные цифры и преобразованы в целое число. Пример:

 #coding=utf8 s = u"1٢٣٤5" print s.isdecimal() # True print int(s) # 12345 

CIRCLED DIGIT SEVEN является CIRCLED DIGIT SEVEN , который является числовым и цифрой.

Если вы хотите ограничить цифры обычным 0-9, используйте регулярное выражение:

 import re def myIsDigit(s): return re.search("[^0-9]", s) is None 
  • Unicode re.sub () не работает с \ g <0> (группа 0)
  • Печать Python работает по-разному на разных серверах
  • Лучший способ декодировать неизвестную кодировку Unicoding в Python 2.5
  • Как я могу отображать собственные акценты для языков в консоли в окнах?
  • Как читать «источник C, текст ISO-8859»
  • Печать строки арабского Unicode в Python (x, y)
  • Преобразование кодовых точек Unicode в символ Unicode с использованием Python 3.3.1
  • Пути файлов Python 3: os.walk () UnicodeEncodeError: кодек «utf-8» не может кодироваться: суррогаты не разрешены
  • Python - лучший язык программирования в мире.