programing

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

javamemo 2023. 6. 19. 21:05
반응형

문자열에 숫자만 포함되어 있는지 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():

설명서에서 다음을 참조하십시오.

str.isdigit ()

문자열의 모든 문자가 숫자이고 하나 이상의 문자가 있으면 True를 반환하고, 그렇지 않으면 False를 반환합니다.숫자에는 10진수 문자와 호환성 상위 스크립트 숫자와 같이 특수한 처리가 필요한 숫자가 포함됩니다.이것은 카로스티 숫자와 같이 10진법에서 숫자를 형성하는 데 사용할 수 없는 숫자를 포함합니다.공식적으로 숫자는 속성 값 Numeric_을 가진 문자입니다.유형=자리 또는 숫자_= 입력합니다.

사용:

>>> "12345".isdigit()
True
>>> "12345a".isdigit()
False
>>>

문자열 is 자릿수 함수 사용:

>>> s = '12345'
>>> s.isdigit()
True
>>> s = '1abc'
>>> s.isdigit()
False

정규식을 사용할 수도 있습니다.

import re

eg:-1) 단어 = "3487954"

re.match('^[0-9]*$',word)

eg:-2) 단어 = "3487.954"

re.match('^[0-9\.]*$',word)

eg:-3) 단어 = "3487.954 328"

re.match('^[0-9\.\ ]*$',word)

3개의 eg가 모두 보이는 것처럼 문자열에 없음을 의미합니다.따라서 이들과 함께 제공된 각각의 솔루션을 따를 수 있습니다.

이 댓글에서 지적했듯이 문자열에 숫자만 포함되어 있는지 파이썬에서 어떻게 확인합니까?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")

부동소수, 음수 등은 어떻습니까?앞의 모든 예시들은 틀릴 것입니다.

지금까지 저는 이런 것을 얻었지만, 훨씬 더 나을 수 있다고 생각합니다.

'95.95'.replace('.','',1).isdigit()

숫자 문자열에 '.'가 하나 있거나 없는 경우에만 true를 반환합니다.

'9.5.9.5'.replace('.','',1).isdigit()

거짓으로 반환됩니다.

확인과 관련된 문제가 발생할 때마다 str이 없음일 수 있고 str이 없음일 수 있는 경우 str.isdigit()만 사용하면 오류가 발생하므로 충분하지 않습니다.

특성 오류: 'NoneType' 개체에 'isdigit' 특성이 없습니다.

그런 다음 먼저 없음이라는 문자열의 유효성을 확인해야 합니다.다중 if 분기를 방지하기 위한 명확한 방법은 다음과 같습니다.

if str and str.isdigit():

이것이 저와 같은 문제를 가진 사람들에게 도움이 되기를 바랍니다.

여기에서 시도 캐치 블록을 사용할 수 있습니다.

s="1234"
try:
    num=int(s)
    print "S contains only digits"
except:
    print "S doesn't contain digits ONLY"

문자열에 모든 자리가 없는지 확인할 수 있는 두 가지 방법이 있습니다.

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

str.isdigit() 메서드 또는 str.isnumeric() 메서드를 사용할 수 있습니다.

솔루션:

def main():
    isbn = input("Enter your 10 digit ISBN number: ")
    try:
        int(isbn)
        is_digit = True
    except ValueError:
        is_digit = False
    if len(isbn) == 10 and is_digit:
        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: ")

이것도 사용할 수 있습니다.

re.match(r'^[\d]*$' , YourString) 

언급URL : https://stackoverflow.com/questions/21388541/how-do-you-check-in-python-whether-a-string-contains-only-numbers

반응형