문자열에 숫자만 포함되어 있는지 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
'programing' 카테고리의 다른 글
Android TextView 주변에 테두리를 두는 방법은 무엇입니까? (0) | 2023.06.19 |
---|---|
ggplot2를 사용하여 R의 각 막대에 대해 gem_bar 위에 레이블을 붙이는 방법 (0) | 2023.06.19 |
PostgreSQL 인덱스 사용 분석 (0) | 2023.06.19 |
스프링 부트 테스트 @ 트랜잭션이 저장되지 않음 (0) | 2023.06.19 |
원격 Git 저장소에서 특정 커밋 검색 (0) | 2023.06.19 |