티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

How do you check in python whether a string contains only numbers?

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

 문제 내용 

How do you check whether a string contains only numbers?

문자열에 숫자만 포함되어 있는지 확인하려면 어떻게 해야하나요?

 

I've given it a go here. I'd like to see the simplest way to accomplish this.

저는 여기까지 해봤습니다. 이 작업을 수행하는 가장 간단한 방법을 알고 싶습니다.
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: ")

 

 

 높은 점수를 받은 Solution 

You'll want to use the isdigit method on your str object:

str 객체의 isdigit 메소드를 사용할 수 있습니다.
if len(isbn) == 10 and isbn.isdigit():

 

From the isdigit documentation:

isdigit 문서에서:

 

str.isdigit()

Return True if all characters in the string are digits and there is at least one character, False otherwise. Digits include decimal characters and digits that need special handling, such as the compatibility superscript digits. This covers digits which cannot be used to form numbers in base 10, like the Kharosthi numbers. Formally, a digit is a character that has the property value Numeric_Type=Digit or Numeric_Type=Decimal.

str.isdigit() 
문자열의 모든 문자가 숫자이고 하나 이상의 문자가 있으면 True를 반환하고 그렇지 않으면 False를 반환합니다. 숫자에는 호환성 위 첨자 숫자와 같이 특별한 처리가 필요한 십진수 문자와 숫자가 포함됩니다. 여기에는 Kharosthi 숫자와 같이 10진법으로 숫자를 형성하는 데 사용할 수 없는 숫자가 포함됩니다. 공식적으로 숫자는 속성 값이 Numeric_Type=Digit 또는 Numeric_Type=Decimal인 문자입니다.

 

 

 

 가장 최근 달린 Solution 

As pointed out in this comment How do you check in python whether a string contains only numbers? the isdigit() method is not totally accurate for this use case, because it returns True for some digit-like characters:

이 댓글에서 지적했듯이 파이썬에서 문자열에 숫자만 포함되어 있는지 어떻게 확인합니까? isdigit() 메서드는 일부 숫자와 같은 문자에 대해 True를 반환하므로 이 사용 사례에 대해 완전히 정확하지는 않습니다.
>>> "\u2070".isdigit() # unicode escaped 'superscript zero' 
True

 

If this needs to be avoided, the following simple function checks, if all characters in a string are a digit between "0" and "9":

이 문제를 방지해야 할 경우, 문자열의 모든 문자가 "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

 

Used in the example from the question:

질문의 예에서 사용:
if len(isbn) == 10 and contains_only_digits(isbn):
    print ("Works")

 

 

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

반응형
댓글
공지사항
최근에 올라온 글