파이썬에는 주어진 문자열에 대해 문자열이 어떻게 구성되어 있는지(숫자 형태의 문자열인지, 알파벳으로 이루어진 문자열인지, 숫자와 알파벳으로만 이루어진 문자열인지...) 판별하는 함수들이 존재한다.
참고로 아래의 함수들 모두 공백이 포함되어 있을 때 False를 반환한다.
- 숫자 판별
isdecimal() : 주어진 문자열이 정수 형태인지, 즉 해당 문자열이 숫자로만 이루어져 있는지를 판별한다.
isdigit() : 주어진 문자열이 숫자 형태인지 판별한다.
isnumeric() : 주어진 문자열이 숫자값 표현에 표현에 해당하는지 판별한다.
test = ['1', '3²', '½', '2.1', '']
list(map(lambda x : x.isdecimal(), test))
>>> [True, False, False, False, False]
list(map(lambda x : x.isdigit(), test))
>>> [True, True, False, False, False]
list(map(lambda x : x.isnumeric(), test))
>>> [True, True, True, False, False]
isdecimal() < isdigit() < isnumeric() 순으로 더 많은 값들을 포함한다.
- 문자 판별
isalpha() : 주어진 문자열이 알파벳으로만 구성되어 있는지 판별한다.
isupper() : 주어진 문자열이 알파벳 대문자로만 구성되어 있는지 판별한다.
islower() : 주어진 문자열이 알파벳 소문자로만 구성되어 있는지 판별한다.
test = ['abc', 'ABC', 'aBc', 'a C', '']
list(map(lambda x : x.isalpha(), test))
>>> [True, True, True, False, False]
list(map(lambda x : x.isupper(), test))
>>> [False, True, False, False, False]
list(map(lambda x : x.islower(), test))
>>> [True, False, False, False, False]
- 숫자+문자 판별
isalnum() : 주어진 문자열이 알파벳이나 숫자로만 구성되어 있는지 판별한다.
test = ['aB01', 'a 1', '']
list(map(lambda x : x.isalnum(), test))
>>> [True, False, False]
- isinstance()
위의 함수들이 주어진 변수의 타입이 문자열인 경우에만 적용되고, 다른 타입 예를 들어 int, float 등의 타입에 해당 함수들을 적용하면 에러가 난다.
그렇다면, 선제적으로 변수가 string 타입인지 또는 다른 특정 타입인지 확인하여야 하는 경우가 있는데 이 경우에는 isinstance()함수를 사용하면 된다.
isinstance(변수, 타입) 과 같이 작성하면 된다.
이 외에도 isinstance()는 특정 객체가 특정 클래스의 인스턴스인지 확인할 때 유용하다.
isinstnace(인스턴스, 클래스) 값이 True이면 해당 클래스 또는 상속받은 부모 클래스의 인스턴스이다.
주어진 변수가 정수인지 확인
isinstance(3, int)
>>> True
isinstance(1.1, int)
>>> False
주어진 변수가 문자열인지 확인
def isStr(x):
return isinstance(x, str)
isStr(3)
>>> False
isStr(-1.1)
>>> False
isStr('test')
>>> True
타입에 튜플 형식으로 여러 타입을 입력하여 이 중 하나인지를 확인할 수도 있다.
isinstance(100, (int, str))
>>> True
람다함수로 문자열만 반환받기
test = [1, 2.3, 0, 'aaa', -1000, 'hello']
list(filter(lambda x : isinstance(x, str), test))
>>> ['aaa', 'hello']
'Python' 카테고리의 다른 글
vscode black 자동 포매팅 설정 (0) | 2024.02.22 |
---|---|
python으로 파일(폴더) 이동, 복사, 삭제 등 (0) | 2024.01.05 |
파이썬 itertools 모듈 (1) | 2022.10.18 |
람다 함수(Lambda Function) (1) | 2022.10.12 |
댓글