Автор Тема: Чем отличается isdigit и isdecimal?  (Прочитано 16612 раз)

DigitalMag

  • Юный джедай
  • **
  • Сообщений: 89
  • Репутация +6/-0
    • Просмотр профиля
Чем отличается isdigit и isdecimal?
« : Февраля 16, 2019, 10:03:20 am »
Собственно сабж.

s = ''
for a in range(128):
    if chr(a).isdigit():
        s+=chr(a)

print (s)

Если isdigit заменить на isdecimal, будет тот же самый результат. В чем разница между ними?

AdminUser

  • Team Lead
  • Юный джедай
  • *****
  • Сообщений: 65
  • Репутация +8/-0
    • Просмотр профиля
Re: Чем отличается isdigit и isdecimal?
« Ответ #1 : Февраля 16, 2019, 10:14:16 am »
isdigit() - для строк в кодировке ascii.
isdecimal() - для строк в кодировке unicode.

Т.к. в питоне, начиная с 3-ей версии, строки по умолчанию хранятся в юникоде, то isdecimal будет работать правильней, ибо он будет охватывать весь спектр кодов юникода, а isdigit - гарантированно только в диапазоне 0-127

Во втором питоне для типа str предпочтительней isdigit