/
Вопросы и ответы
/
Python
/

Как проверить строку на наличие цифр python

Как проверить строку на наличие цифр python

5 лет назад

Человек-Молекула

Ответы

2

Для проверки, есть ли в строке цифры, можно воспользоваться встроенным методом isdigit(), который проверяет что строка состоит из цифры, и, проверяя, обойти всю строчку

1
2
3
4
5
t = 'foobar!'
# any вернет True, если хотя бы одна проверка будет True
any(ch.isdigit() for ch in t)  # False
t = 'foo1bar'
any(ch.isdigit() for ch in t)  # True

4 года назад

Ivan Mamtsev

0

Есть ли в строке хотя бы одна цифра, проверяет any() вместе с isdigit():

1
2
3
4
5
def has_digit(text):
    return any(ch.isdigit() for ch in text)

print(has_digit("пароль123"))  # => True
print(has_digit("пароль"))     # => False

any() останавливается на первой найденной цифре.

Состоит ли строка только из цифр

1
2
3
4
print("2025".isdigit())    # => True
print("20 25".isdigit())   # => False — пробел не цифра
print("-5".isdigit())      # => False — минус не цифра
print("3.14".isdigit())    # => False

Чтобы проверить, что строка — число, включая отрицательные и дробные, попробуйте преобразовать её:

1
2
3
4
5
6
7
8
9
def is_number(text):
    try:
        float(text)
        return True
    except ValueError:
        return False

print(is_number("-3.14"))  # => True
print(is_number("12a"))    # => False

Через регулярное выражение

1
2
3
4
5
import re

print(bool(re.search(r"\d", "abc5")))     # => True — есть цифра
print(bool(re.fullmatch(r"\d+", "123")))  # => True — только цифры
print(re.findall(r"\d+", "a12b345"))      # => ['12', '345'] — все числа

Посчитать цифры

1
2
text = "a1b2c3"
print(sum(ch.isdigit() for ch in text))  # => 3

isdigit(), isdecimal() и isnumeric()

Строкаisdecimal()isdigit()isnumeric()
"123"TrueTrueTrue
"²"FalseTrueTrue
"½"FalseFalseTrue

Для обычных цифр 0–9 все три методы работают одинаково. Если строку потом передадите в int(), проверяйте через isdecimal(): int("²") выдаст ошибку, хотя "²".isdigit() вернёт True.

Строки и их методы разбирают в бесплатном курсе «Основы Python».

8 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845