문자열에 숫자 만 포함되어 있는지 어떻게 확인합니까?
나는 여기에 갔다. 이 작업을 수행하는 가장 간단한 방법을보고 싶습니다.
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: ")
답변
객체 에서 isdigit
메소드 를 사용하고 싶을 것입니다 str
.
if len(isbn) == 10 and isbn.isdigit():
로부터 isdigit
문서 :
str.isdigit ()
문자열의 모든 문자가 숫자이고 하나 이상의 문자가 있으면 True를, 그렇지 않으면 False를 반환합니다. 숫자에는 호환성 위첨자 숫자와 같이 특수 처리가 필요한 10 진수 문자와 숫자가 포함됩니다. 이 숫자는 Kharosthi 숫자와 같이 10 진수로 숫자를 형성하는 데 사용할 수없는 숫자를 포함합니다. 공식적으로 숫자는 속성 값이 Numeric_Type = Digit 또는 Numeric_Type = Decimal 인 문자입니다.
답변
사용 str.isdigit
:
>>> "12345".isdigit()
True
>>> "12345a".isdigit()
False
>>>
답변
답변
정규식을 사용할 수도 있습니다.
import re
예 : -1) 단어 = “3487954”
re.match('^[0-9]*$',word)
예 : -2) 단어 = “3487.954”
re.match('^[0-9\.]*$',word)
예 : -3) 단어 = “3487.954 328”
re.match('^[0-9\.\ ]*$',word)
보시다시피, 예를 들어 3은 모두 문자열에만 없음을 의미합니다. 그래서 당신은 그들과 함께 주어진 각각의 해결책을 따를 수 있습니다.
답변
float 수 , 음수 등 은 어떻습니까? 이전의 모든 예제가 잘못되었습니다.
지금까지 나는 이와 같은 것을 얻었지만 훨씬 나아질 수 있다고 생각합니다.
'95.95'.replace('.','',1).isdigit()
‘.’가 없거나없는 경우에만 true를 반환합니다. 자릿수로.
'9.5.9.5'.replace('.','',1).isdigit()
거짓을 반환합니다
답변
이 주석에서 지적했듯이 문자열에 숫자 만 포함되어 있는지 파이썬에서 어떻게 확인합니까? 이 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")
답변
try catch 블록을 여기에서 사용할 수 있습니다.
s="1234"
try:
num=int(s)
print "S contains only digits"
except:
print "S doesn't contain digits ONLY"
