Python/Python 기초 정리

[Python] 문자열 관련 함수 : 숫자 포함 관련 함수

Jake the Dog 2022. 3. 19. 12:16
반응형

숫자 포함 관련 함수

isalnum()

  • 문자열이 문자와 숫자로만 이루어졌는지 여부를 boolean 값으로 반환
  • 문자열.isalnum()
  • 한글도 true값을 반환한다
  • 공백도 판단하여 공백이 포함되어있으면 false
  • 특수문자는 false
a = "ab cd efg"
b = "abcdefg"
a = "ab cd efg"
b = "abcdefg"
c = "123"
d = "1 2 3"
e = "abc123"
f = "abc 123"
g = "가나다"
h = "≥"

print("a.isalnum() >>> ", a.isalnum())
print("b.isalnum() >>> ", b.isalnum())
print("c.isalnum() >>> ", c.isalnum())
print("d.isalnum() >>> ", d.isalnum())
print("e.isalnum() >>> ", e.isalnum())
print("f.isalnum() >>> ", f.isalnum())
print("g.isalnum() >>> ", g.isalnum())
print("h.isalnum() >>> ", h.isalnum())

결과

a.isalnum() >>>  False
b.isalnum() >>>  True
c.isalnum() >>>  True
d.isalnum() >>>  False
e.isalnum() >>>  True
f.isalnum() >>>  False
g.isalnum() >>>  True
h.isalnum() >>>  False

isalpha()

  • 문자열이 문자로만 이루어졌는지 여부를 boolean 값으로 반환
  • 문자열.isalpha()
  • 한글도 true값을 반환한다
  • 공백도 판단하여 공백이 포함되어있으면 false
  • 특수문자는 false
a = "ab cd efg"
b = "abcdefg"
c = "123"
d = "1 2 3"
e = "abc123"
f = "abc 123"
g = "가나다"
h = "≥"

print("a.isalpha() >>> ", a.isalpha())
print("b.isalpha() >>> ", b.isalpha())
print("c.isalpha() >>> ", c.isalpha())
print("d.isalpha() >>> ", d.isalpha())
print("e.isalpha() >>> ", e.isalpha())
print("f.isalpha() >>> ", f.isalpha())
print("g.isalpha() >>> ", g.isalpha())
print("h.isalpha() >>> ", h.isalpha())

결과
a.isalpha() >>>  False
b.isalpha() >>>  True
c.isalpha() >>>  False
d.isalpha() >>>  False
e.isalpha() >>>  False
f.isalpha() >>>  False
g.isalpha() >>>  True
h.isalpha() >>>  False

 

isdigit() / isnumeric() / isdecimal()

  • 문자열이 숫자로만 되어있는지 여부를 boolean값으로 반환
  • 문자열.isdigit() / 문자열.isnumeric() / 문자열.isdecimal()
  • 숫자인지만 판단하기 때문에 3.19와 같이. 소수점 표현이 들어가더라도 false 처리한다
  • isdigit : 단일 글자가 숫자 모양으로 생겼는지를 판단하여 반환한다. 숫자처럼 생긴 모든 글자를 숫자로 판단한다.
  • isnumeric : 숫자 값 표현에 해당하는 문자열까지 인정한다. 제급근, 분수, 거듭제곱 특수문자도 True로 반환.
  • isdecimal : 주어진 문자열이 int형으로 변환이 가능한가의 여부를 반환한다. 특수문자 중 숫자 모양을 숫자로 치지 않는다.
  • 특수문자를 인정하지 않고 숫자로 되었는지만 판단하려면 isdecimal을 사용하는 것이 가장 안전해 보인다.
a = "3"
b = "3²"
c = "3**2"
d = "3.14"

print("a.isdigit() >>> ", a.isdigit())  # 숫자이기 때문에 True
print("a.isnumeric() >>> ", a.isnumeric())  # 숫자이기 때문에 True
print("a.isdecimal() >>> ", a.isdecimal())  # 숫자이기 때문에 True

print("b.isdigit() >>> ", b.isdigit())  # 모양이 숫자여서 True
print("b.isnumeric() >>> ", b.isnumeric())  # 숫자를 표현한 특수문자라 True
print("b.isdecimal() >>> ", b.isdecimal())  # int형 반환이 안되기 때문에 False

print("c.isdigit() >>> ", c.isdigit())  # 계산식이지만 문자가 포함되어 False
print("c.isnumeric() >>> ", c.isnumeric())  # 계산식이지만 문자가 포함되어 False
print("c.isdecimal() >>> ", c.isdecimal())  # 계산식이지만 int변환이 되지 않아 False

print("d.isdigit() >>> ", d.isdigit()) # 소숫점 표현이지만 .이라는 문자가 포함되어 False
print("d.isnumeric() >>> ", d.isnumeric()) # 소숫점 표현이지만 .이라는 문자가 포함되어 False
print("d.isdecimal() >>> ", d.isdecimal()) # 소숫점 표현이지만 .이라는 문자가 포함되어 False

# 결과
a.isdigit() >>>  True
a.isnumeric() >>>  True
a.isdecimal() >>>  True

b.isdigit() >>>  True
b.isnumeric() >>>  True
b.isdecimal() >>>  False

c.isdigit() >>>  False
c.isnumeric() >>>  False
c.isdecimal() >>>  False

d.isdigit() >>>  False
d.isnumeric() >>>  False
d.isdecimal() >>>  False
반응형