Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python string 모듈 완벽 정리: 주요 상수부터 capwords(), Formatter, Template까지

Python 표준 라이브러리의 string 모듈은 문자열 처리에 유용하게 사용할 수 있는 다양한 상수, 클래스, 그리고 헬퍼 함수인 capwords()를 제공합니다. 이 글에서는 string 모듈의 핵심 기능들을 예제 코드와 함께 자세히 살펴보겠습니다.

1. string 모듈의 주요 상수

string 모듈은 자주 사용되는 문자 집합을 상수 형태로 미리 정의해 두고 있어, 별도로 문자열을 작성할 필요 없이 바로 가져다 쓸 수 있습니다.

ascii_letters소문자 상수(ascii_lowercase)와 대문자 상수(ascii_uppercase)를 연결한 전체 영문 알파벳 문자열입니다.
ascii_lowercase영어 소문자 'abcdefghijklmnopqrstuvwxyz'
ascii_uppercase영어 대문자 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
digits숫자 0~9로 구성된 문자열 '0123456789'입니다.
hexdigits16진수 표현에 사용되는 문자열 '0123456789abcdefABCDEF'입니다.
octdigits8진수 표현에 사용되는 문자열 '01234567'입니다.
punctuation구두점으로 간주되는 ASCII 문자들로 구성된 문자열입니다.
printabledigits, ascii_letters, punctuation, whitespace를 모두 포함하여 출력 가능한 ASCII 문자 전체를 담은 문자열입니다.
whitespace공백(space), 탭(tab), 줄바꿈(linefeed), 캐리지 리턴(return), 폼 피드(formfeed), 수직 탭(vertical tab) 등 공백 문자로 간주되는 모든 ASCII 문자를 포함한 문자열입니다.

2. 상수 출력 결과 확인하기

Python 인터프리터에서 각 상수를 직접 호출하면 아래와 같은 결과를 얻을 수 있습니다.

>>> import string
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.digits
'0123456789'
>>> string.hexdigits
'0123456789abcdefABCDEF'
>>> string.octdigits
'01234567'
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>> string.whitespace
' \t\n\r\x0b\x0c'

3. capwords() 함수

capwords() 함수는 전달받은 문자열을 다음과 같은 순서로 처리합니다.

  • str.split()을 사용해 문자열을 단어 단위로 분리합니다.

  • str.capitalize()를 사용해 각 단어의 첫 글자를 대문자로 변환합니다.

  • str.join()을 사용해 변환된 단어들을 다시 하나의 문자열로 합칩니다.

사용 예제

>>> text='All animals are equal. Some are more equal'
>>> string.capwords(text)
'All Animals Are Equal. Some Are More Equal'

이 함수는 문장 내 모든 단어의 첫 글자만 대문자로 만들고 싶을 때 title() 메서드보다 더 깔끔한 결과를 제공합니다. title()은 'don't'처럼 중간에 따옴표가 있는 경우 의도치 않은 결과를 낼 수 있지만, capwords()는 이러한 문제를 방지할 수 있습니다.

4. Formatter 클래스

Python의 내장 str 클래스에는 format() 메서드가 있어 문자열을 손쉽게 포매팅할 수 있습니다. string 모듈의 Formatter 객체도 이와 유사하게 동작하며, 특히 이 클래스를 상속(subclassing)하면 나만의 커스텀 포매터 클래스를 작성할 때 매우 유용합니다.

>>> from string import Formatter
>>> f=Formatter()
>>> f.format('name:{name}, age:{age}, marks:{marks}', name='Rahul', age=30, marks=50)
'name:Rahul, age:30, marks:50'

5. Template 클래스

Template 클래스는 문자열 템플릿을 만들 때 사용하며, 간단한 문자열 치환(string substitution) 작업에 특히 유용합니다. $ 기호 뒤에 변수 이름을 붙여 플레이스홀더를 지정하고, substitute() 메서드로 실제 값을 넣어줍니다.

>>> from string import Template
>>> text='My name is $name. I am $age years old'
>>> t=Template(text)
>>> t.substitute(name='Rahul', age=30)
'My name is Rahul. I am 30 years old'

마무리

string 모듈은 단순해 보이지만 문자열 검증, 포매팅, 템플릿 처리 등 실무에서 자주 활용되는 강력한 도구들을 담고 있습니다. 알파벳·숫자·구두점 같은 문자 집합이 필요할 때, 문장의 첫 글자를 일괄 대문자로 바꿀 때, 또는 사용자 입력 기반 템플릿을 안전하게 처리할 때 string 모듈을 적극적으로 활용해 보시기 바랍니다.