你如何在python中检查一个字符串是否只包含数字?

Cod*_*r77 111 python string numbers

如何检查字符串是否只包含数字?

我已经在这里试了一下.我想看看实现这一目标的最简单方法.

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: ")
Run Code Online (Sandbox Code Playgroud)

mhl*_*ter 214

您将要isdigitstr对象上使用该方法:

if len(isbn) == 10 and isbn.isdigit():
Run Code Online (Sandbox Code Playgroud)

isdigit文档:

str.isdigit()
Run Code Online (Sandbox Code Playgroud)

如果字符串中的所有字符都是数字并且至少有一个字符,则返回true,否则返回false.

对于8位字符串,此方法取决于区域设置.

  • 值得注意的是,这可能不是您真正想要的支票。这将检查所有字符是否都为_digit_like_,而不是字符串是否为可解析的数字。例如,字符串“⁰”(即Unicode上标零)确实传递了“ isdigit”,但如果传递给了“ int()”,则会引发“ ValueError”。 (9认同)

iCo*_*dez 35

用途str.isdigit:

>>> "12345".isdigit()
True
>>> "12345a".isdigit()
False
>>>
Run Code Online (Sandbox Code Playgroud)


ndp*_*dpu 8

使用string isdigit函数:

>>> s = '12345'
>>> s.isdigit()
True
>>> s = '1abc'
>>> s.isdigit()
False
Run Code Online (Sandbox Code Playgroud)


Dev*_*hat 6

您还可以使用正则表达式,

import re
Run Code Online (Sandbox Code Playgroud)

例如:-1) word = "3487954"

re.match('^[0-9]*$',word)
Run Code Online (Sandbox Code Playgroud)

例如:-2) word = "3487.954"

re.match('^[0-9\.]*$',word)
Run Code Online (Sandbox Code Playgroud)

例如:-3) word = "3487.954 328"

re.match('^[0-9\.\ ]*$',word)
Run Code Online (Sandbox Code Playgroud)

如您所见,所有 3 个 eg 表示您的字符串中只有 no。所以你可以按照他们给出的相应解决方案进行操作。