如何检查字符串是否只包含数字?
我已经在这里试了一下。我希望看到实现这一目标的最简单方法。
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: ")
答案 0 :(得分:188)
您希望在isdigit
对象上使用str
方法:
if len(isbn) == 10 and isbn.isdigit():
str.isdigit()
如果字符串中的所有字符都是数字,则返回true 并且至少有一个角色,否则为假。
对于8位字符串,此方法取决于语言环境。
答案 1 :(得分:30)
使用str.isdigit
:
>>> "12345".isdigit()
True
>>> "12345a".isdigit()
False
>>>
答案 2 :(得分:8)
使用字符串isdigit功能:
>>> s = '12345'
>>> s.isdigit()
True
>>> s = '1abc'
>>> s.isdigit()
False
答案 3 :(得分:2)
您可以在此处使用try catch block:
s="1234"
try:
num=int(s)
print "S contains only digits"
except:
print "S doesn't contain digits ONLY"
答案 4 :(得分:1)
每次遇到检查问题都是因为str有时可能是None,如果str可以是None,只使用str.isdigit()是不够的,因为你会收到错误
AttributeError:' NoneType'对象没有属性' isdigit'
然后你需要先验证str是否为None。为了避免使用multi-if分支,一个明确的方法是:
if str and str.isdigit():
希望这有助于人们像我一样有同样的问题。
答案 5 :(得分:1)
我可以想到2种方法来检查字符串是否全部不是数字
方法1(在python中使用内置的isdigit()函数):-
>>>st = '12345'
>>>st.isdigit()
True
>>>st = '1abcd'
>>>st.isdigit()
False
方法2(在字符串顶部执行异常处理):-
st="1abcd"
try:
number=int(st)
print("String has all digits in it")
except:
print("String does not have all digits in it")
以上代码的输出为:
String does not have all digits in it
答案 6 :(得分:0)
浮点数,底片数字等等。之前的所有示例都是错误的。
到现在为止,我得到了类似的东西,但我认为它可能会好很多:
'95.95'.replace('.','',1).isdigit()
只有当有一个'或'时,才会返回true。在数字串中。
'9.5.9.5'.replace('.','',1).isdigit()
将返回false
答案 7 :(得分:0)
您还可以使用正则表达式
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个例子,例如,您的字符串中没有任何内容。因此,您可以按照他们提供的相应解决方案进行操作。
答案 8 :(得分:0)
正如此评论How do you check in python whether a string contains only numbers?中所指出的,isdigit()
方法在此用例中并不完全准确,因为对于某些数字字符,它返回True:
>>> "\u2070".isdigit() # unicode escaped 'superscript zero'
True
如果需要避免这种情况,则以下简单函数检查字符串中的所有字符是否为“ 0”和“ 9”之间的数字:
import string
def contains_only_digits(s):
# True for "", "0", "123"
# False for "1.2", "1,2", "-1", "a", "a1"
for ch in s:
if not ch in string.digits:
return False
return True
在问题示例中使用:
if len(isbn) == 10 and contains_only_digits(isbn):
print ("Works")
答案 9 :(得分:0)
您可以使用str.isdigit()方法或str.isnumeric()方法