[파이썬] 여러문자 한번에 치환하기

반응형
    반응형

    여러문자 한꺼번에 치환하기

    파이썬에서 문자열을 다루다보면 특정 문자열을 한꺼번에 다른 문자열로 치환해야 하는 경우가 있습니다. 이번에는 파이썬에서 여러 문자열을 한꺼번에 치환해주는 방법에 대해 알아보겠습니다.

     

    replace() 메소드

    replace() 메소드는 문자열에서 특정 문자열을 다른 문자열로 치환하는 함수입니다. 다음은 replace() 메소드를 사용하여 문자열 내의 여러 문자열을 한꺼번에 치환하는 방법입니다.

    text = "apple banana cherry apple banana cherry"
    text = text.replace("apple", "orange").replace("banana", "kiwi")
    print(text)

    위의 코드에서는 text 문자열에서 "apple"을 "orange"로, "banana"를 "kiwi"로 모두 치환하고 있습니다. replace() 메소드는 치환한 결과를 반환하기 때문에, 이를 다시 text 변수에 할당해주어야 합니다.

     

    str.maketrans()와 str.translate() 메소드

    str.maketrans()와 str.translate() 메소드를 사용하면 문자열에서 여러 문자열을 한꺼번에 치환할 수 있습니다. str.maketrans() 메소드는 치환할 문자열을 매핑하는 역할입니다. 파라미터는 원래글자,바꿀글자,제거할문자인데 현재는 치환만 얘기하겠습니다. 원래글자와 바꿀글자의 길이가 똑같아야 합니다. 이를 str.translate() 메소드에 전달하여 문자열을 치환합니다. 아래처럼 딕셔너리로 사전이 있다고 가정하고 한꺼번에 치환을 해보겠습니다.

    table = {'a': '1', 'e': '2', 'i': '3', 'o': '4', 'u': '5'}
    text = "apple orange kiwi"
    table_key = ''.join(list(table.keys())) #문자열로 변경 'aeiou'
    table_value = ''.join(list(table.values())) #문자열로 변경 '12345'
    new_text = text.translate(str.maketrans(table_key,table_value))
    print(new_text)

    str.maketrans() 메소드를 사용하여 딕셔너리의 있는 표시대로 text가 바뀌었습니다.

     

    re.sub() 함수

    re.sub() 함수를 사용하여 정규표현식을 이용해 문자열 내의 여러 문자열을 한꺼번에 치환할 수 있습니다.

    import re
    
    text = "apple banana cherry apple banana cherry"
    text = re.sub("(apple|banana)", "orange", text)
    print(text)

    위의 코드에서는 re.sub() 함수를 사용하여 "apple"이나 "banana"를 "orange"로 모두 치환하고 있습니다. 정규표현식 "(apple|banana)"은 "apple"이나 "banana"를 의미하며, 이를 "orange"로 치환하고 있습니다.

     

    비교

    replace(), str.maketrans(), str.translate(), re.sub() 메소드 모두 파이썬에서 문자열을 다루는 데에 사용되는 메소드입니다. 하지만 각각의 메소드는 다른 방식으로 문자열을 치환하고 처리합니다.

    세가지 방법을 표로 정리했습니다.

     

     

    메소드 설명
    replace() - 주어진 문자열에서 특정 문자열을 다른 문자열로 대체하는 메소드.
    - 치환할 문자열이 한 번만 나타날 경우에는 매우 간단하고 쉽게 사용할 수 있음.
    - 치환할 문자열이 여러 번 반복해서 나타나는 경우에는 일일이 모든 경우를 대체해함.
    - 비효율적일 수 있음.
    str.maketrans(), str.translate() - 치환 테이블을 생성하는 메소드
    - str.maketrans()로 치환할 문자열을 대응시킨 후 str.translate() 메소드에서 사용해 치환
    - 하나의 문자열에서 여러 가지 치환 작업을 한꺼번에 처리할 수 있음
    re.sub() - 정규식을 사용하여 문자열을 치환
    - 정규식은 다양한 패턴 매칭 및 문자열 검색 작업을 수행할 수 있으며, 이를 활용하여 문자열을 변환 가능
    - 일반적으로 더 복잡한 문자열 작업을 수행하는 데 적합

     

    따라서, 단순한 문자열 치환 작업을 수행할 때는 replace() 메소드를 사용하는 것이 좋으며, 여러 가지 복잡한 문자열 변환 작업을 수행할 때는 str.maketrans()와 str.translate() 메소드를 사용하는 것이 좋습니다.
    문자열 자체가 표현하기 어렵고 복잡하다면 정규표현식을 알아야하는 단점은 있지만 re.sub()를 사용하는 게 좋은 것 같습니다.

     

    마치며

    위의 방법들은 파이썬에서 여러 문자열을 한꺼번에 치환하는 방법입니다. 
    각 방법에 따라 장단점이 있으니 다양한 상황에서 유용하게 사용할 수 있으니, 필요에 따라 적재적소로 사용하면 되겠습니다.

     

    함께 보면 좋은 글

    [Pandas] replace로 값 변경하기

    [Python/기초] - [Python] 딕셔너리(dictionary)

    딕셔너리 key 변경하기

     

    댓글

    Designed by JB FACTORY

    ....