파이썬에서는 translate() 메서드를 사용하여 문자열 내의 문자들을 지정한 매핑 테이블에 따라 일괄 변환할 수 있습니다. 이 메서드는 모든 문자가 테이블 규칙에 따라 치환된 새로운 문자열 복사본을 반환하며, 선택적으로 세 번째 인자로 전달된 문자들은 삭제할 수도 있습니다.
여기서 매핑 테이블은 maketrans() 함수를 통해 생성합니다. 이 함수는 원본 문자 집합(intab)과 대체 문자 집합(outtab)을 받아 두 집합 간의 일대일 대응 관계를 담은 테이블을 만들어 줍니다.
예제
다음은 소문자 모음(a, e, i, o, u)을 숫자 1~5로 치환하는 예제입니다.
from string import maketrans # maketrans 함수 호출에 필요합니다. intab = "aeiou" outtab = "12345" trantab = maketrans(intab, outtab) str = "This is a string example....wow!!!" print str.translate(trantab)
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Th3s 3s 1 str3ng 2x1mpl2....w4w!!!
출력 결과를 보면 문자열에 포함된 모든 모음이 intab과 outtab의 순서에 맞게 숫자로 바뀐 것을 확인할 수 있습니다. 즉, 'a'→'1', 'e'→'3', 'i'→'1', 'o'→'4', 'u'→'5'처럼 앞에서부터 순서대로 매핑됩니다.
파이썬 3에서의 사용법
참고로 위 코드는 파이썬 2 기준입니다. 파이썬 3에서는 string 모듈의 maketrans()가 제거되고, 문자열 타입 자체의 정적 메서드인 str.maketrans()로 대체되었습니다. 또한 출력 시 print 문 대신 print() 함수를 사용해야 합니다.
intab = "aeiou" outtab = "12345" trantab = str.maketrans(intab, outtab) text = "This is a string example....wow!!!" print(text.translate(trantab))
실행 결과는 동일하게 Th3s 3s 1 str3ng 2x1mpl2....w4w!!!가 출력됩니다. 이처럼 translate()와 maketrans()를 조합하면 반복문 없이도 문자 단위 치환 작업을 간결하고 빠르게 처리할 수 있습니다.