[python] 파이썬에서 문자열에 숫자 만 포함되어 있는지 어떻게 확인합니까?

문자열에 숫자 만 포함되어 있는지 어떻게 확인합니까?

나는 여기에 갔다. 이 작업을 수행하는 가장 간단한 방법을보고 싶습니다.

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


답변

문자열 isdigit 함수를 사용하십시오 .

>>> s = '12345'
>>> s.isdigit()
True
>>> s = '1abc'
>>> s.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"