문자열에서 특정 기준값 K보다 큰 문자, 즉 알파벳 순서상 뒤에 위치한 문자를 제거해야 하는 경우에는 간단한 반복문과 파이썬 내장 함수인 ord()(유니코드 표현을 반환)를 함께 사용하면 손쉽게 해결할 수 있습니다.
ord()는 문자를 유니코드 정수 값으로 변환해 주는 함수로, 영문 소문자 'a'의 유니코드 값은 97입니다. 따라서 ord(문자) - 97을 계산하면 해당 문자가 알파벳에서 몇 번째 위치(0부터 시작)에 있는지 알 수 있고, 이 값을 기준값 K와 비교해 원하는 문자만 남기는 방식입니다.
아래는 실제 동작 예시입니다.
예제 코드
my_list = ["python", "is", "easy", "to", "learn"]
print("The list is :")
print(my_list)
K = 9
print("The value of K is ")
print(K)
my_result = []
for element in my_list:
result_string = ''
for sub in element:
if (ord(sub) - 97 <= K):
result_string += sub
my_result.append(result_string)
print("The resultant list is :")
print(my_result)
실행 결과
The list is : ['python', 'is', 'easy', 'to', 'learn'] The value of K is 9 The resultant list is : ['h', 'i', 'ea', '', 'ea']
코드 설명
- 문자열로 구성된 리스트
my_list를 정의하고 콘솔에 출력합니다. - 기준값
K를 9로 정의하고 출력합니다. - 결과를 저장할 빈 리스트
my_result를 생성합니다. - 바깥쪽 반복문으로 리스트의 각 문자열을 순회하고, 안쪽 반복문으로 개별 문자를 하나씩 검사합니다.
- 각 문자마다
ord()로 얻은 유니코드 값에서 97(소문자 'a'의 값)을 뺀 결과가 K 이하인지 확인합니다. 즉, K가 9라면 'a'부터 'j'까지의 문자만 남습니다. - 조건을 만족하는 문자는 임시 문자열
result_string에 차례대로 이어 붙입니다. - 하나의 문자열 검사가 끝나면 완성된 문자열을 결과 리스트에 추가합니다.
- 모든 처리가 끝나면 최종 결과를 콘솔에 출력합니다.
예제에서는 K가 9이므로 'python'에서는 'h', 'is'에서는 'i', 'easy'에서는 'ea', 'to'에서는 빈 문자열, 'learn'에서는 'ea'가 각각 추출됩니다. 이처럼 ord() 함수와 반복문만으로도 원하는 범위의 문자를 간단히 필터링할 수 있습니다.