Проверить является ли строка числом в Python

Часто вам бывает нужно проверить, является ли строка числом. Это происходит все время, например, при заполнении пользователем полей, при извлечении данных из базы, или при чтении файла. В зависимости от того какая задача перед вами стоит, вы можете использовать разные методы, например разбор строки регулярными выражениями или попытаться конвертировать строку и посмотреть что происходит. Но спешу вам сообщить что для упрощения этой задачи в Python уже есть отличная встроенная функция - isdigit(). В случае если строка является числом эта функция возвращает True. Если же не является - False.


Пример

>>> string = "306"
>>> string.isdigit()
True

>>> string = "neer"
>>> string.isdigit()
False

>>> string = "neer306" >>> string.isdigit() False

К сожалению функция isdigit не работает для чисел с плавающей точкой и для отрицательных чисел. Так что для такой проверки можно использовать следующую функцию, которая представляет собой комбинацию из проверки isdigit и обычного конвертирования во float:


def is_digit(string):
if string.isdigit():
return True
else:
  try: float(string) return True except ValueError: return False

Проверяем:


>>>print(is_digit('neer'))
False

>>>print(is_digit('neer306'))
False

>>>print(is_digit('306'))
True

>>>print(is_digit('0.05'))
True

>>>print(is_digit('0.05abc'))
False