文字列に数字のみが含まれているかどうかをどのように確認しますか?
ここで試してみました。私はこれを達成する最も簡単な方法を見たいです。
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 __== "__main__":
main()
input("Press enter to exit: ")
isdigit
オブジェクトでstr
メソッドを使用する必要があります。
if len(isbn) == 10 and isbn.isdigit():
str.isdigit()
文字列内のすべての文字が数字で、少なくとも1つの文字がある場合はtrueを返し、そうでない場合はfalseを返します。
8ビット文字列の場合、このメソッドはロケールに依存します。
str.isdigit
を使用します。
>>> "12345".isdigit()
True
>>> "12345a".isdigit()
False
>>>
文字列を使用 isdigit function:
>>> 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がNoneかどうかを検証する必要があります。 multi-ifブランチを回避するための明確な方法は次のとおりです。
if str and str.isdigit():
これが私のような同じ問題を抱えている人々に役立つことを願っています。
float numbers、negatives numbersなどについてはどうでしょう。前の例はすべて間違っています。
今まで私はこのようなものを得ましたが、私はそれがはるかに良いかもしれないと思います:
'95.95'.replace('.','',1).isdigit()
'。'が1つまたはない場合にのみtrueを返します。数字の列。
'9.5.9.5'.replace('.','',1).isdigit()
falseを返します
このコメントで指摘されているように pythonで文字列に数字のみが含まれているかどうかを確認するにはどうすればよいですかisdigit()
メソッドは、このユースケースでは完全に正確ではありません。キャラクターのように:
>>> "\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")
正規表現を使用することもできますが、
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つすべてを見るとわかるように、たとえば、文字列にはnoしかありません。だから、それらに与えられたそれぞれのソリューションに従うことができます。