Перейти к содержимому

Как проверить содержит ли строка цифры python

  • автор:

Проверка на число

Достаточно часто требуется узнать: записано ли в переменной число. Такая ситуация может возникнуть при обработке введенных пользователем данных. При чтении данных из файла или при обработке полученных данных от другого устройства.

В Python проверка строки на число можно осуществить двумя способами:

  • Проверить все символы строки что в них записаны цифры. Обычно используется для этого функция isdigit.
  • Попытаться перевести строку в число. В Python это осуществляется с помощью методов float и int. В этом случае обрабатывается возможное исключение.

Рассмотрим как применяются эти способы на практике.

isdigit, isnumeric и isdecimal

У строк есть метод isdigit, который позволяет проверить, являются ли символы, являются ли символы, из которых состоит строка цифрами. С помощью этого метода мы можем проверить, записано ли в строку целое положительное число или нет. Положительное — это потому, что знак минус не будет считаться цифрой и метод вернет значение False.

a = '0251' print(a.isdigit()) True

Если в строка будет пустой, то функция возвратит False.

a = '' print(a.isdigit()) False

Методы строки isnumeric и isdecimal работают аналогично. Различия в этих методах только в обработке специальных символов Unicode. А так как пользователь будет вводить цифры от 0 до 9, а различные символы, например, дробей или римских цифр нас не интересуют, то следует использовать функцию isdigit.

Проверка с помощью исключения

Что же делать, если требуется проверить строку на отрицательное число. В Python с помощью isdigit не удастся определить отрицательное число или число с плавающей точкой. В этом случае есть универсальный и самый надежный способ. Надо привести строку к вещественному числу. Если возникнет исключение, то значит в строке записано не число.

Приведем функцию и пример ее использования:

def is_number(str): try: float(str) return True except ValueError: return False a = '123.456' print(is_number(a)) True

Для целых чисел

Аналогично можно сделать и проверку на целое число:

def is_int(str): try: int(str) return True except ValueError: return False a = '123.456' print(is_int(a)) False

Проверка строки на числовое значение в Python

Часто в ходе работы с Python возникает необходимость проверить, является ли строка числовым значением. Например, при обработке пользовательского ввода или при чтении данных из файла. В этих случаях, данные часто представлены в виде строк и могут содержать числовые значения, записанные как строки.

Рассмотрим пример: есть строка ‘123’ и есть необходимость узнать, является ли это число.

s = '123'

Самый простой и распространенный подход для проверки строки на числовое значение в Python — это использование обработки исключений.

Сначала попытаться преобразовать строку в число с помощью функции float() . Если преобразование прошло успешно, значит строка содержит числовое значение. Если во время преобразования произошла ошибка ValueError , значит строка не является числом.

def is_number(s): try: float(s) return True except ValueError: return False

Однако, этот подход может показаться немного громоздким, особенно для новичков.

Существует другой способ, который использует регулярные выражения.

import re def is_number(s): if re.match("^\d+?\.\d+?$", s) is None: return s.isdigit() return True

В этом примере используется функция re.match() , которая проверяет, соответствует ли строка заданному регулярному выражению. В данном случае проверяется, является ли строка числом с плавающей точкой. Если это не так, то с помощью метода isdigit() проверяется, является ли строка целым числом.

Оба подхода могут быть использованы в зависимости от конкретной ситуации и предпочтений разработчика.

Проверка, является ли строка целым числом в Python без использования try/except

Когда работаешь с данными в Python, часто приходится сталкиваться с ситуацией, когда необходимо проверить, является ли строка целым числом. Это может быть актуально, например, при обработке пользовательского ввода, когда требуется убедиться, что введенные данные соответствуют определенному формату.

Предположим, есть следующие строки:

s1 = '123' s2 = '-456' s3 = '7.89' s4 = 'abcdef'

Необходимо проверить, являются ли эти строки целыми числами. Очевидно, что только s1 и s2 являются целыми числами, в то время как s3 является десятичным числом, а s4 — вообще не числом.

Один из распространенных подходов к решению этой проблемы — использовать конструкцию try/except, однако, она может быть избыточной и не всегда желательной. К счастью, в Python существуют другие способы.

Один из таких способов — использование метода isdigit() , который возвращает True , если строка содержит только цифры. Однако, данный метод не справится с отрицательными числами и числами с плавающей точкой.

print(s1.isdigit()) # True print(s2.isdigit()) # False, потому что есть знак '-' print(s3.isdigit()) # False print(s4.isdigit()) # False

Другой способ — использовать регулярные выражения. В Python для этого есть модуль re . Можно создать шаблон, который будет соответствовать только целым числам, и затем проверять, соответствует ли строка этому шаблону.

import re def is_int(s): return bool(re.match(r'^-?\d+$', s)) print(is_int(s1)) # True print(is_int(s2)) # True print(is_int(s3)) # False print(is_int(s4)) # False

Таким образом, задача проверки, является ли строка целым числом, может быть решена в Python без использования try/except.

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

К сожалению функция 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *