본문 바로가기
파이썬/기초 문법

[파이썬]문자열 함수들 - 대문자, 소문자, 알파벳, 숫자

by 코키드 Cokid 2022. 9. 27.
반응형

이번 포스팅에서는 문자열이 어떤 형태로 되어있는지 확인할 수 있는 함수들을 다뤄볼 것이다.

대문자, 소문자, 알파벳인지 확인하기 - isupper, islower, isalpha

isupper 함수로 대문자인지 확인하기

>>> a = 'PYTHON' 
>>> a.isupper()
True

>>> a = 'Python' 
>>> a.isupper()  
False

>>> a = 'P Y T H O N' 
>>> a.isupper() # 공백은 상관 없음
True

>>> a = 'PYTHON가나다' 
>>> a.isupper() # 한글도 상관 없음
True

>>> a = 'PYTHON123' 
>>> a.isupper() # 숫자도 상관 없음
True

isupper 함수는 문자열이 모두 대문자로 이루어져 있는지 확인하는 함수이다.

문자열이 모두 대문자로 이루어져 있으면 True를 소문자가 포함되어 있으면 False를 출력한다.

당연히 알파벳만 될 줄 알았는데, 공백이나 숫자, 한글이 있어도 알파벳 문자가 대문자인지 확인하는 것 같다.

 

islower 함수로 소문자인지 확인하기

>>> a = 'python'
>>> a.islower()
True

>>> a = 'Python' 
>>> a.islower()  
False

islower는 isupper랑 반대로 문자열이 모두 소문자로 있는지 확인한다.

 

isalpha 함수로 알파벳인지 확인하기

>>> a = 'Python'      
>>> a.isalpha()
True

>>> a = 'Python123' 
>>> a.isalpha() # 숫자가 포함되면 False     
False

>>> a = 'P y t h o n'     
>>> a.isalpha() # 공백은 포함되면 False  
False

>>> a = 'Python가나다' 
>>> a.isalpha() # 한글은 포함되어도 True
True

isalpha 함수는 문자열이 모두 알파벳으로 이루어져 있는지 확인하는 함수다.

숫자가 포함된 'Python123', 공백이 포함된 'P y t h o n' 모두 isalpha 적용 시 False를 반환한다.

그런데 한글이 포함된 'Python가나다'는 True를 반환하니 사용 시 주의가 필요하다.

 

(어떤)숫자인지 확인하기 - isdecimal, isdigit, isnumeric

isdecimal, isdigit, isnumeric 비교

isdecimal. isdigit, isnumeric 세 함수는 모두 문자열이 숫자로 되어있는지 확인하는 함수이다.

그런데 각 함수마다 조금씩 다른데, 

isdecimal - 문자열이 정수로 이루어져 있는지 확인

isdigit - 문자열이 숫자 형태로 되어있는지 확인(특수문자 포함)

isnumeric - isdigit이랑 비슷하지만 범위가 더 넓음(거듭제곱, 제곱근, 분수, 로마 숫자 등)

직관적으로 이해하기가 쉽지 않으니 여러가지 예를 보면서 확인해보자.

 

def check_result(num_str):
    result = '''
In case of {},
isdecimal(): {}
isdigit(): {}
isnumeric(): {}
'''.format(num_str, num_str.isdecimal(), num_str.isdigit(), num_str.isnumeric())
    print(result)

우선 결과를 쉽게 확인할 수 있게 함수를 하나 만들어 보자.

 

a = '123'
check_result(a)

In case of 123,
isdecimal(): True
isdigit(): True
isnumeric(): True

우선 이 세 함수는 문자열 자료형에 사용하는 함수이다. '123'은 문자이지 123의 값을 가진 숫자형이 아니다.

정수 '123'에 세 함수를 적용하니 모두 True를 반환한다.

 

a = '②'
check_result(a)

In case of ②,
isdecimal(): False
isdigit(): True
isnumeric(): True

이번엔 특수문자 에 함수들을 적용해보자. isdecimal은 False를 반환하지만 나머지는 모두 True를 반환한다.

 

a = '½'
check_result(a)

In case of ½,
isdecimal(): False
isdigit(): False
isnumeric(): True

특수문자½에 대해서는 isnumeric만 True를 반환하고 나머지는 모두 False를 반환한다.

 

a = 'ⅳ'
check_result(a)

In case of ⅳ,
isdecimal(): False
isdigit(): False
isnumeric(): True

로마 숫자 에 대해서도 역시 isnumeric만 반환한다.

 

a = '123.44'
check_result(a)

In case of 123.44,
isdecimal(): False
isdigit(): False
isnumeric(): False

소수점이 있는 경우에 세 함수 중 어느 것도 True를 반환하지 않는다.

소수점이 있는 경우엔 따로 함수를 만들어서 사용해야 할 것 같다.

직관적으로 알기가 쉽지 않다. 이 함수들의 사용 시 직접 테스트해보면서 코드를 작성해야 할 것 같다.

 

숫자인지 문자인지 모두 확인하기 - isalnum

isalnum으로 숫자&문자 확인하기

>>> a = '123'
>>> a.isalnum() # 정수형 문자에 True 반환
True

>>> a = 'Cokid'
>>> a.isalnum() # 알파벳 문자에 True 반환
True

isalnum 함수는 문자열이 숫자와 알파벳으로만 이루어져있는지 확인하는 함수다.

위 예문을 보면 문자열 '123'과 'Cokid'는 모두 True를 반환하는 것을 볼 수 있다.

 

>>> a = '123Cokid'
>>> a.isalnum() # 숫자와 알파벳의 혼용 시에도 True 반환
True

>>> a = '123 Cokid'
>>> a.isalnum() # 공백 포함 시 False 반환
False

숫자와 알파벳이 혼용 시에도 True를 반환한다. 하지만 공백이 포함된 문자에는 False를 반환한다.

 

>>> a = '¼'
>>> a.isalnum() # 숫자의 형태를 가진 특수문자도 True 반환
True

>>> a = '123.4'
>>> a.isalnum() # 소수점을 가진 숫자는 False 반환
False

>>> a = '!@#$'
>>> a.isalnum() # 특수문자는 False 반환
False

>>> a = '한글'
>>> a.isalnum() # 한글은 True
True

숫자 형태의 특수문자인 '¼'의 경우 True를 반환한다. isnumeric과 같은 범위의 특수문자를 커버한다.

isnumeric과 마찬가지로 소수점이 있는 숫자의 문자열에는 False를 반환한다.

숫자 형태가 아닌 특수문자에는 모두 False를 반환하는데, 한글은 True를 반환한다...

 

오늘 소개한 함수들은 직관적으로 이해하기가 쉽지 않다.

함수 사용시 본인의 상황에 맞게 적절히 테스트해가면서 사용해보자.

 

 

 

 

2022.09.23 - [파이썬/기초 문법] - [Python]문자열 자료형(str) 만들기 & 이스케이프 코드

2022.09.24 - [파이썬/기초 문법] - [파이썬]문자열(Strging)의 인덱싱(Indexing)과 슬라이싱(Slicing)

2022.09.25 - [파이썬/기초 문법] - [Python]문자열 포매팅(Formatting) - 포맷 코드(%s)&format 함수&f 포매팅

2022.09.26 - [파이썬/기초 문법] - [파이썬]문자열 함수[1/3] - find, index, count, join, split

2022.09.26 - [분류 전체보기] - [파이썬]문자열 함수[2/3] - upper, lower, strip, replace

반응형

댓글