你如何检查python是否一个string只包含数字?

你如何检查一个string是否只包含数字?

我已经放弃了。 我想看到最简单的方法来完成这一点。

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

你会想在你的str对象上使用isdigit方法:

 if len(isbn) == 10 and isbn.isdigit(): 

isdigit文档:

 str.isdigit() 

如果string中的所有字符都是数字并且至less有一个字符,则返回true,否则返回false。

对于8位string,此方法是与区域相关的。

使用str.isdigit

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

使用stringisdigit函数:

 >>> 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'

然后你需要先validationstr是否为None。 为了避免multi-if分支,一个明确的方法是:

 if str and str.isdigit(): 

希望这有助于像我这样的人有同样的问题。