이 튜토리얼에서는 Python의 문자열 메서드인 str.casefold()에 대해 자세히 알아보겠습니다. 이 메서드는 어떠한 인수도 받지 않으며, 대소문자를 구분하지 않는 비교(caseless comparison)에 적합한 문자열을 반환합니다.
대소문자 구분 없는 비교란 무엇일까요?
대소문자 구분 없는 비교란 말 그대로 문자열을 비교할 때 알파벳의 대소문자 차이를 무시하고 비교하는 방식을 의미합니다. 대표적인 예로 독일어 소문자 ß(에스체트)가 있습니다. 독일어에서 ß는 ss와 동일하게 취급됩니다. str.casefold() 메서드는 ß를 ss로 변환하며, 문자열 내 모든 글자를 소문자로 바꿔줍니다.
단순히 lower() 메서드만 사용한다면 ß는 그대로 유지되기 때문에, 국제화된 문자열을 다룰 때는 casefold()가 더 강력한 선택입니다.
기본 사용 예제
# 문자열 초기화 string = "TUTORIALSPOINT" # casefold() 버전 출력 print(string.casefold())
실행 결과
위 프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다.
tutorialspoint
모든 대문자가 소문자로 변환된 것을 확인할 수 있습니다.
casefold() 없이 직접 비교하는 경우
이제 대소문자 구분 없는 비교가 실제로 어떻게 작동하는지 살펴보겠습니다. 문자열 ßtutorialspoint와 sstutorialspoint를 직접 비교하면 False가 출력됩니다. 코드로 확인해 보겠습니다.
예제
# 문자열 초기화 string = "ßtutorialspoint" second_string = "sstutorialspoint" # 두 문자열 비교 print(string == second_string)
실행 결과
예상했던 대로 위 프로그램의 결과는 False입니다.
False
ß와 ss는 의미상 같지만, 일반적인 비교 연산자는 이를 서로 다른 문자로 판단하기 때문입니다.
casefold()를 사용한 비교
이번에는 동일한 비교를 str.casefold() 메서드를 사용하여 수행해 보겠습니다.
예제
# 문자열 초기화 string = "ßtutorialspoint" second_string = "sstutorialspoint" # 두 문자열 비교 print(string.casefold() == second_string)
실행 결과
위 코드를 실행하면 다음과 같은 결과를 얻습니다.
True
casefold()가 ß를 ss로 변환했기 때문에 두 문자열이 같다고 판단되어 True가 반환된 것입니다.
정리
str.casefold() 메서드는 단순한 소문자 변환을 넘어, 다국어 환경에서 정확한 문자열 비교를 가능하게 해주는 강력한 도구입니다. 특히 영어 외의 언어(독일어 등)를 처리할 때 lower() 대신 casefold()를 사용하는 것이 좋습니다. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨주세요!