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

파이썬에서 주어진 매핑 사전에 따라 문자열을 변환하는 방법

파이썬에서는 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()를 조합하면 반복문 없이도 문자 단위 치환 작업을 간결하고 빠르게 처리할 수 있습니다.