Вопрос-Ответ

Check if a string contains a number

Проверка, содержит ли строка число

Большинство вопросов, которые я нашел, основаны на том факте, что они ищут буквы в своих числах, тогда как я ищу числа в том, что я хотел бы иметь в виде строки без числа. Мне нужно ввести строку и проверить, содержит ли она какие-либо числа и отклоняет ли она их.

Функция isdigit() возвращает True только в том случае, если ВСЕ символы являются числами. Я просто хочу посмотреть, ввел ли пользователь число, поэтому предложение вроде "I own 1 dog" или что-то в этом роде.

Есть идеи?

Переведено автоматически
Ответ 1

Вы можете использовать any функцию с str.isdigit функцией следующим образом

def has_numbers(inputString):
return any(char.isdigit() for char in inputString)

has_numbers("I own 1 dog")
# True
has_numbers("I own no dog")
# False

В качестве альтернативы вы можете использовать регулярное выражение, например, это

import re
def has_numbers(inputString):
return bool(re.search(r'\d', inputString))

has_numbers("I own 1 dog")
# True
has_numbers("I own no dog")
# False
Ответ 2

Вы можете использовать комбинацию any и str.isdigit:

def num_there(s):
return any(i.isdigit() for i in s)

Функция вернет, True если в строке существует цифра, в противном случае False.

ДЕМОНСТРАЦИЯ:

>>> king = 'I shall have 3 cakes'
>>> num_there(king)
True
>>> servant = 'I do not have any cakes'
>>> num_there(servant)
False
Ответ 3

Используйте метод Python str.isalpha(). Эта функция возвращает True, если все символы в строке являются буквенными и присутствует хотя бы один символ; в противном случае возвращает False.

Документы по Python: https://docs.python.org/3/library/stdtypes.html#str.isalpha

Ответ 4

https://docs.python.org/2/library/re.html

Вам лучше использовать регулярное выражение. Это намного быстрее.

import re

def f1(string):
return any(i.isdigit() for i in string)


def f2(string):
return re.search('\d', string)


# if you compile the regex string first, it's even faster
RE_D = re.compile('\d')
def f3(string):
return RE_D.search(string)

# Output from iPython
# In [18]: %timeit f1('assdfgag123')
# 1000000 loops, best of 3: 1.18 µs per loop

# In [19]: %timeit f2('assdfgag123')
# 1000000 loops, best of 3: 923 ns per loop

# In [20]: %timeit f3('assdfgag123')
# 1000000 loops, best of 3: 384 ns per loop
2023-08-07 01:47 python string