Выбор между методами Python isdigit(), isnumeric() и isdecimal()
В Python существует три различных метода для проверки того, является ли строка числовой. В этой статье вы узнаете о тонких различиях между isdigit
, isnumeric
и isdecimal
. Между методами существуют тонкие, но важные различия, и знание этих различий поможет вам понять, какой метод лучше использовать в каждом конкретном случае. Хотя на первый взгляд может показаться, что они делают одно и то же, понимание их особенностей поможет вам избежать множества проблем в программировании.
После прочтения этой статьи вы узнаете:
Что делают методы
.isdigit()
,.isnumeric()
и.isdecimal()
, каковы их ограничения и области примененияРазличия между тремя методами и случаи, когда они могут работать не совсем так, как ожидается
Оглавление:
Python isdigit
: Как работает
isdigit
: Как работает Метод isdigit()
возвращает True, если все символы в строке являются цифрами, и False в противном случае.
Давайте рассмотрим несколько примеров, чтобы понять, как работает метод:
Из приведенных примеров видно, что метод isdigit()
имеет некоторые особенности:
Если все символы являются цифрами, метод возвращает True
Если символ - пробел или десятичная точка, метод возвращает False
Интересно отметить, что метод isdigit()
также работает с надстрочными символами и показателями степени, даже когда они представлены в юникод-версии:
Python isnumeric: Как работает
Метод isnumeric()
имеет ряд ключевых отличий от метода isdigit()
. Если isdigit()
проверяет, содержит ли строка только цифры, то isnumeric()
проверяет, являются ли все символы числовыми.
Принципиальное различие заключается в том, что isnumeric()
может работать с такими элементами, как юникод-дроби и римские цифры, при условии, что все символы в строке являются числовыми значениями.
Давайте посмотрим, как работает метод isnumeric()
:
Python isdecimal: Как работает
Метод isdecimal()
несколько отличается, посколько оценивает, является ли символ десятичным символом, а не числовым символом. Из-за этого он вернет True, только если все символы могут быть представлены десятичным числом, то есть дроби и надстрочные символы будут возвращать False.
Мы видим, что метод isdecimal
однозначно определяет, что он считает десятичными числами. Это может быть очень полезно, если вы хотите возвращать только значения в десятичной системе счисления.
Различия между Python isdigit
, isnumeric
, isdecimal
isdigit
, isnumeric
, isdecimal
Таблица ниже показывает ключевые различия между методами isdigit
, isnumeric
и isdecimal
, которые могут использоваться для определения различий, связанных с числами в строках
Важно отметить, что: проверка на истинность происходит в порядке isdecimal
, isdigit
, затем isnumeric
– это означает, что всё, что истина для isdecimal, будет истино и для следующих двух. Всё, что истина для isdigit
, будет истино для isnumeric
Тип строки
Пример
Python .isdecimal()
Python .isdigit()
Python .isnumeric()
Десятичные числа
'0123'
True
True
True
Дроби и верхние индексы
'⅔', '2²'
False
True
True
Римские цифры
'ↁ'
False
False
True
Хотя эта таблица предоставляет упрощенный обзор методов на высоком уровне, более подробный анализ того, как работают эти методы и какие результаты можно ожидать, представлен в предыдущих разделах.
Проверка числа с плавающей точкой
Самый простой способ проверить, представляет ли строка число с плавающей точкой - использовать функцию float()
. Если функция не вызывает ValueError, значит строка представляет число с плавающей точкой.
Когда строка с неправильным форматом числа с плавающей запятой передается, возвращается False
. Если строка действительно представляет собой число с плавающей запятой, возвращается True.
Проверка отрицательных чисел
Все описанные выше методы не работают с отрицательными числами, так как знак минус (-)
всегда будет возвращать False. Поэтому лучший способ проверки - удалить символ минуса, если он является первым символом.
Мы видим, что функция работает как ожидается, сначала удаляя первый символ, если он равен -
.
Заключение
В этой статье вы научились использовать строковые методы Python isdigit
, isnumeric
и isdecimal
для проверки того, представляет ли строка различные числовые типы. Вы узнали тонкие различия между тремя методами, что дает вам четкое понимание, когда использовать каждый из методов (и, что не менее важно, когда не использовать). Вы также научились работать со строками, представляющими числа с плавающей точкой, и строками, представляющими отрицательные числа.
Чтобы узнать больше о методе Python isdigit
, ознакомьтесь с официальной документацией здесь. Официальная документация для метода isnumeric
доступна здесь, а документация для метода isdecimal
доступна здесь
Last updated