你如何检查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():
希望这有助于像我这样的人有同样的问题。