파이썬 string 모듈이란?
파이썬에는 string이라는 표준 라이브러리가 기본으로 제공됩니다. 이 모듈에는 문자열 처리에 유용한 다양한 상수, 메서드, 클래스가 정의되어 있어 복잡한 문자열 작업을 손쉽게 수행할 수 있습니다.
string 모듈의 기능을 사용하려면 먼저 코드에서 모듈을 임포트해야 합니다.
import string
string 모듈의 주요 상수
string 모듈에서 자주 사용되는 상수와 그 값은 아래 표와 같습니다.
| 번호 | 상수명 및 값 |
|---|---|
| 1 | string.ascii_lowercase 'abcdefghijklmnopqrstuvwxyz' → 영어 소문자 알파벳 전체 |
| 2 | string.ascii_uppercase 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' → 영어 대문자 알파벳 전체 |
| 3 | string.ascii_letters ascii_lowercase와 ascii_uppercase를 연결한 값 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' |
| 4 | string.digits '0123456789' → 십진수 숫자 전체 |
| 5 | string.hexdigits '0123456789abcdefABCDEF' → 16진수에서 사용하는 숫자와 문자 |
| 6 | string.octdigits '01234567' → 8진수에서 사용하는 숫자 |
| 7 | string.punctuation '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~' → 문장부호 및 특수문자 집합 |
| 8 | string.printable 출력 가능한 모든 ASCII 문자. ascii_letters, punctuation, digits, whitespace를 모두 포함합니다. '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c' |
| 9 | string.whitespace '\t\n\r\x0b\x0c' → 탭, 줄바꿈 등 공백 문자 집합 |
예제 코드
import string print(string.hexdigits) print(string.ascii_uppercase) print(string.printable)
실행 결과
0123456789abcdefABCDEF
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~format() 메서드를 활용한 문자열 포매팅
파이썬의 내장 문자열 클래스는 format() 메서드를 통해 복잡한 변수 치환과 값 포매팅을 지원합니다. 중괄호 {} 안에 값이 삽입될 위치를 표시하는 것이 기본 문법입니다.
'{} {}'.format(a, b)a와 b의 값이 각각 중괄호 위치에 순서대로 들어갑니다. 여기에 더해 중괄호 안에 위치 인덱스나 변수 이름(키워드)을 직접 지정할 수도 있어, 원하는 순서대로 값을 배치할 수 있습니다.
문자열 패딩(Padding)
format() 메서드를 사용하면 텍스트에 원하는 문자로 여백을 채우는 패딩도 간단히 적용할 수 있습니다.
'{:(채울 문자) > (너비)}'.format('문자열')> 기호는 오른쪽 정렬 후 지정한 문자로 너비만큼 채우는 의미입니다. 반대로 <는 왼쪽 정렬, ^는 가운데 정렬을 나타냅니다.
문자열 잘라내기(Truncation)
format() 메서드는 지정한 길이만큼 문자열을 잘라내는 기능도 제공합니다.
'{:.길이}'.format('문자열')문자열은 지정된 길이까지만 남기고 잘립니다.
예제 코드
print('The Name is {} and Roll {}'.format('Jhon', 40))
print('The values are {2}, {1}, {3}, {0}'.format(50, 70, 30, 15)) #위치 인자 사용
print('Value 1: {val1}, value 2: {val2}'.format(val2 = 20, val1=10)) #변수 이름 사용
#문자열 패딩
print('{: >{width}}'.format('Hello', width=20))
print('{:_^{width}}'.format('Hello', width=20)) #가운데 정렬 후 '_' 문자로 패딩
#지정한 길이만큼 문자열 자르기
print('{:.5}'.format('Python Programming')) #앞의 5글자만 추출실행 결과
The Name is Jhon and Roll 40
The values are 30, 70, 15, 50
Value 1: 10, value 2: 20
Hello
_______Hello________
Pytho템플릿(Template)을 이용한 문자열 치환
string 모듈의 Template 클래스는 보다 단순한 방식으로 문자열을 치환할 수 있는 기능을 제공합니다. 템플릿 문자열에서는 $ 문자를 사용하며, $식별자 형태를 만나면 해당 식별자의 새로운 값으로 교체됩니다.
템플릿을 사용하는 기본 문법은 다음과 같습니다.
myStr = string.Template("$a will be replaced")
myStr.substitute(a = 'XYZ')문자열 안의 $a 부분이 'XYZ'로 대체됩니다. 또한 딕셔너리를 활용하면 여러 값을 한 번에 치환할 수도 있습니다.
예제 코드
my_template = string.Template("The value of A is $X and Value of B is $Y")
my_str = my_template.substitute(X = 'Python', Y='Programming')
print(my_str)
my_dict = {'key1' : 144, 'key2' : 169}
my_template2 = string.Template("The first one $key1 and second one $key2")
my_str2 = my_template2.substitute(my_dict)
print(my_str2)실행 결과
The value of A is Python and Value of B is Programming The first one 144 and second one 169