Как проверить, содержит ли строка только числа?
Я попробовал здесь. Я хотел бы увидеть самый простой способ добиться этого.
import string
def main():
isbn = input("Enter your 10 digit ISBN number: ")
if len(isbn) == 10 and string.digits == True:
print ("Works")
else:
print("Error, 10 digit number was not inputted and/or letters were inputted.")
main()
if __name__ == "__main__":
main()
input("Press enter to exit: ")
False
так какstring.digits == True
всегда оценивается какFalse
.Ответы:
Вы захотите использовать этот
isdigit
метод для своегоstr
объекта:Из
isdigit
документации :источник
isdigit
, ноValueError
при передаче вызываетint()
.Использование
str.isdigit
:источник
try: assert str(int(foo)) == foo; except (AssertionError,ValueError): #handle
и это было уродливо, как грех. Спасибо!Используйте строковую функцию isdigit :
источник
Вы также можете использовать регулярное выражение,
например: -1) word = "3487954"
например: -2) word = "3487.954"
например: -3) word = "3487.954 328"
Как вы можете видеть, все 3 например означает, что в вашей строке нет. Таким образом, вы можете следовать соответствующим решениям, приведенным с ними.
источник
re.match('^[0-9\.]*$',word)
не работает для поплавков.if(bool(re.search(r'\d', word)))
хотя работает нормально.А как насчет чисел с плавающей запятой , отрицательных чисел и т. Д. Все предыдущие примеры будут неправильными.
До сих пор у меня было что-то вроде этого, но я думаю, что могло бы быть намного лучше:
вернет истину, только если есть один или нет '.' в строке цифр.
вернет false
источник
Как указано в этом комментарии. Как вы проверяете в Python, содержит ли строка только числа?
isdigit()
метод не является абсолютно точным для этого случая использования, потому что она возвращает Справедливо для некоторых цифр, как символов:Если этого нужно избежать, следующая простая функция проверяет, все ли символы в строке являются цифрами от «0» до «9»:
Используется в примере из вопроса:
источник
all(ch in string.digits for ch in s)
.Вы можете использовать здесь блок try catch:
источник
except ValueError:
int("1_000")
например, не приводит к ошибке.Поскольку каждый раз, когда я сталкиваюсь с проблемой с проверкой, это связано с тем, что str иногда может быть None, и если str может быть None, использовать только str.isdigit () недостаточно, так как вы получите сообщение об ошибке
а затем вам нужно сначала проверить, что str - None или нет. Чтобы избежать ветвления с несколькими if, простой способ сделать это:
Надеюсь, это поможет людям, у которых такая же проблема, как и у меня.
источник
Есть два метода, которые я могу придумать, чтобы проверить, все ли цифры в строке не
Метод 1 (с использованием встроенной функции isdigit () в python): -
Метод 2 (выполнение обработки исключений поверх строки): -
Результатом приведенного выше кода будет:
источник
вы можете использовать метод str.isdigit () или метод str.isnumeric ()
источник