Как проверить в python, содержит ли строка только числа?


Как проверить, содержит ли строка только числа?

Я дал ему идти здесь. Я хотел бы увидеть самый простой способ сделать это.

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: ")
7 73

7 ответов:

вы хотите использовать isdigit метод

использовать str.isdigit:

>>> "12345".isdigit()
True
>>> "12345a".isdigit()
False
>>>

используйте строку isdigit:

>>> s = '12345'
>>> s.isdigit()
True
>>> s = '1abc'
>>> s.isdigit()
False

вы можете использовать блок try catch здесь:

s="1234"
try:
    num=int(s)
    print "S contains only digits"
except:
    print "S doesn't contain digits ONLY"

как каждый раз, когда я сталкиваюсь с проблемой с проверкой, потому что str может быть None иногда, и если str не может быть None, используйте только str.isdigit () недостаточно, так как вы получите ошибку

AttributeError: 'NoneType' объект не имеет атрибут 'isdigit'

и затем вам нужно сначала проверить str нет или нет. Чтобы избежать ветви multi-if, ясный способ сделать это:

if str and str.isdigit():

надеюсь, что это помогает людям иметь ту же проблему вроде меня.

насчет числа с плавающей точкой,минусы номера, etc.. Все предыдущие примеры будут ошибочными.

до сих пор я получил что-то вроде этого, но я думаю, что это могло быть намного лучше:

'95.95'.replace('.','',1).isdigit()

будет возвращать true только если есть один или нет. в строку цифр.

'9.5.9.5'.replace('.','',1).isdigit()

возвращает false

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

import re

например: -1) word = "3487954"

re.match('^[0-9]*$',word)

например: -2) word = "3487.954"

re.match('^[0-9\.]*$',word)

например: -3) word = "3487.954 328"

re.match('^[0-9\.\ ]*$',word)

как вы можете видеть все 3, например, означает, что там только нет в строке. Таким образом, вы можете следовать соответствующим решениям, приведенным с ними.