문자열 목록에서 대소문자가 통일된 문자열(모든 글자가 소문자이거나 모든 글자가 대문자인 문자열)만 골라내야 하는 경우가 종종 있습니다. 파이썬에서는 리스트 컴프리헨션(list comprehension)과 함께 내장 문자열 메서드인 isupper()와 islower()를 활용하면 아주 간단하게 처리할 수 있습니다.
예제 코드
다음은 실제 동작 예시입니다.
my_list = ["Python", "good", "FOr", "few", "CODERS"]
print("원본 리스트 :")
print(my_list)
my_result = [sub for sub in my_list if sub.islower() or sub.isupper()]
print("대소문자가 통일된 문자열 :")
print(my_result)실행 결과
The list is : ['Python', 'good', 'FOr', 'few', 'CODERS'] The strings with same case are : ['good', 'few', 'CODERS']
출력 결과를 보면 'Python'(첫 글자만 대문자)과 'FOr'(대소문자가 섞임)처럼 대소문자가 혼합된 문자열은 제외되고, 순수하게 소문자 또는 대문자로만 이루어진 'good', 'few', 'CODERS'만 남은 것을 확인할 수 있습니다.
동작 원리
먼저 여러 문자열을 담은 리스트를 정의하고 콘솔에 출력합니다.
리스트 컴프리헨션을 사용해 리스트의 각 요소를 순회하면서, 해당 문자열이 전부 소문자인지(
islower()) 아니면 전부 대문자인지(isupper()) 검사합니다.조건을 만족하는 문자열만 새 리스트에 담아 변수에 할당합니다.
최종 결과를 콘솔에 출력합니다.
참고로 islower()와 isupper()는 최소 한 개 이상의 대소문자 구분이 가능한(cased) 문자가 포함되어 있어야 정확하게 동작하므로, 숫자나 특수문자만 있는 문자열이 포함될 가능성이 있다면 별도의 조건 처리를 추가하는 것이 좋습니다.