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

파이썬 문자열 연산 완벽 가이드: string 모듈 상수부터 포매팅과 템플릿까지

파이썬 string 모듈이란?

파이썬에는 string이라는 표준 라이브러리가 기본으로 제공됩니다. 이 모듈에는 문자열 처리에 유용한 다양한 상수, 메서드, 클래스가 정의되어 있어 복잡한 문자열 작업을 손쉽게 수행할 수 있습니다.

string 모듈의 기능을 사용하려면 먼저 코드에서 모듈을 임포트해야 합니다.

import string

string 모듈의 주요 상수

string 모듈에서 자주 사용되는 상수와 그 값은 아래 표와 같습니다.

번호상수명 및 값
1string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
→ 영어 소문자 알파벳 전체
2string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
→ 영어 대문자 알파벳 전체
3string.ascii_letters
ascii_lowercase와 ascii_uppercase를 연결한 값
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
4string.digits
'0123456789'
→ 십진수 숫자 전체
5string.hexdigits
'0123456789abcdefABCDEF'
→ 16진수에서 사용하는 숫자와 문자
6string.octdigits
'01234567'
→ 8진수에서 사용하는 숫자
7string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
→ 문장부호 및 특수문자 집합
8string.printable
출력 가능한 모든 ASCII 문자. ascii_letters, punctuation, digits, whitespace를 모두 포함합니다.
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
9string.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