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

Python 문자열에서 문자 제거하기: replace(), translate(), 슬라이싱 완벽 가이드

Python에서는 replace() 또는 translate() 메서드를 사용해 문자열에서 특정 문자를 제거할 수 있습니다. 두 메서드 모두 지정한 값으로 문자나 문자열을 대체하며, 빈 문자열("")을 지정하면 선택한 문자가 별도의 대체 없이 그대로 제거됩니다.

Python 문자열에서 문자 제거하기

문자열이 항상 우리가 원하는 값만 담고 있는 것은 아닙니다. 사용자가 입력 필드에 원치 않는 기호를 넣을 수도 있고, 문자열에서 특정 문자를 모두 삭제해야 하는 경우도 생깁니다.

어떤 문자를 제거하고 싶든, Python이라면 걱정할 필요가 없습니다!

이 가이드에서는 문자열에서 하나 이상의 문자를 제거하는 다양한 방법을 예제와 함께 살펴보겠습니다.

다룰 내용은 다음과 같습니다:

  • replace() 메서드 활용하기
  • translate() 메서드 활용하기
  • 인덱싱(슬라이싱)으로 마지막 문자 제거하기

그럼 시작해 보겠습니다!

replace()로 문자 제거하기

문자열의 replace() 함수는 특정 문자를 새로운 문자로 대체합니다. 이 함수를 활용하면 어떤 문자든 빈 문자열로 바꿔 사실상 제거할 수 있습니다.

예를 들어, 사용자에게 아이디(username)를 입력받는 프로그램을 만든다고 가정해 봅시다. 아이디에는 밑줄(_) 문자가 허용되지 않습니다. 새 Python 파일을 열고 다음 코드를 입력하세요:

username = input("Choose a username: ")
final_username = username.replace("_", "")

print("Your username is: " + final_username)

이 코드는 input() 메서드를 사용해 사용자에게 아이디를 입력받습니다.

replace() 메서드는 원본 문자열에서 밑줄 문자를 찾아 모든 인스턴스를 빈 문자열로 대체합니다. 그런 다음 밑줄이 제거된 아이디를 콘솔에 출력합니다.

프로그램을 실행해 보겠습니다:

Choose a username: pythonista_101
Your username is: pythonista101

코드가 지정된 아이디에서 밑줄 문자를 성공적으로 제거했습니다. 밑줄이 포함되지 않은 문자열에도 정상적으로 동작합니다:

Choose a username: pythonista101
Your username is: pythonista101

아이디에 밑줄이 없으면 아무런 변화도 일어나지 않습니다.

replace()로 여러 문자 제거하기

문자열에서 여러 문자를 한 번에 제거하려면 어떻게 해야 할까요? for 반복문 안에서 replace() 메서드를 사용하면 됩니다.

앞선 예제에서는 아이디에서 밑줄 하나만 제거했습니다. 이번에는 마침표(.), 밑줄(_), 느낌표(!)를 모두 제거해 보겠습니다. 새 Python 파일을 만들고 다음 코드를 입력하세요:

username = input("Choose a username: ")
disallowed_characters = ".-_!"

for character in disallowed_characters:
	username = username.replace(character, "")

print("Your username is: " + username)

먼저 사용자에게 아이디를 입력받습니다. 그다음, 아이디에 포함되면 안 되는 문자들을 모두 담은 문자열을 정의합니다.

그리고 for 반복문을 생성합니다. 이 반복문은 "disallowed_characters" 문자열의 각 문자를 순회하며, 매 반복마다 해당 문자를 "username" 문자열에서 빈 문자열로 대체합니다.

코드를 실행해 보겠습니다:

Choose a username: pythonista.101!!!
Your username is: pythonista101

마침표와 느낌표가 모두 깔끔하게 필터링되었습니다.

translate()로 문자 제거하기

Python의 translate() 메서드는 문자 매핑 테이블을 기준으로 문자열의 문자들을 치환합니다. 이 메서드는 치환 규칙이 담긴 번역 테이블(translation table) 하나를 인수로 받습니다.

이 메서드를 사용하려면 먼저 번역 테이블을 만들어야 합니다. 이 테이블은 문자열에서 어떤 문자를 무엇으로 바꿀지 지정하는 역할을 합니다.

translate() 메서드로 아이디에서 모든 밑줄을 제거해 보겠습니다:

username = input("Choose a username: ")
final_username = username.translate({ ord("_"): None })

print("Your username is: " + final_username)

이 코드는 "_" 문자의 모든 인스턴스를 None 값으로 대체합니다. Python의 ord() 함수는 "_" 문자에 해당하는 유니코드 코드 포인트를 반환하며, translate() 메서드는 이 값을 통해 제거할 문자를 식별합니다.

translate()로 여러 문자 제거하기

translate() 메서드로도 여러 문자를 한 번에 제거할 수 있습니다.

제거하려는 문자 목록을 순회하며 매핑 테이블을 생성하는 방식으로 구현할 수 있습니다.

아이디에서 밑줄, 마침표, 느낌표를 모두 제거해 보겠습니다:

username = input("Choose a username: ")
final_username = username.translate({ ord(c): None for c in ".-_!" })

print("Your username is: " + final_username)

translate() 메서드는 "username" 문자열의 각 문자가 마침표, 느낌표, 밑줄 중 하나와 일치하는지 확인하고, 일치하는 문자를 None으로 대체해 문자열에서 제거합니다.

여기서는 딕셔너리 컴프리헨션(dictionary comprehension)을 사용해 제외할 문자 목록의 각 문자를 순회하며 매핑 테이블을 간결하게 생성했습니다.

프로그램을 실행해 보겠습니다:

Choose a username: pythonista_100!
Your username is: pythonista101

지정한 모든 특수 문자가 문자열에서 성공적으로 제거되었습니다.

Python 문자열에서 마지막 문자 제거하기

문자열의 마지막 문자를 제거하려면 [:-1] 슬라이스 표기법을 사용합니다. 이 표기법은 인덱스 -1 위치(마지막 문자)를 제외한 나머지 모든 문자를 반환합니다.

기본 문법은 다음과 같습니다:

your_string = "A string"

print(your_string[:-1])

마지막 문자 제거 예제

직원 식별자(identifier)에서 마지막 문자를 제거하는 프로그램을 만들어 보겠습니다. 이 마지막 문자는 직원이 소속된 부서를 나타냅니다.

예를 들어 "M"은 마케팅 부서 소속임을 의미합니다. 부서 정보를 별도로 관리하는 새 시스템으로 전환되면서 이 문자를 제거해야 하는 상황입니다.

먼저 input() 메서드로 직원 식별자를 입력받습니다:

identifier = input("What is the employee's identifier? ")

다음으로 식별자의 마지막 문자를 제거합니다:

new_identifier = identifier[:-1]

[:-1]은 문자열 슬라이싱 연산으로, 음수 인덱싱을 사용해 문자열 끝에서부터 항목에 접근합니다. 이제 직원의 새 식별자를 콘솔에 출력합니다:

print("The employee's new identifier is {}.".format(new_identifier))

format() 문은 문자열 안의 중괄호({})를 직원의 새 식별자로 대체합니다. 코드를 실행해 결과를 확인해 보겠습니다:

What is the employee's identifier? 28371M
The employee's new identifier is 28371.

프로그램이 직원 식별자의 마지막 문자를 성공적으로 제거했습니다.

마무리

문자열에서 하나 또는 여러 개의 문자를 제거할 때는 replace() 또는 translate() 메서드를 사용할 수 있습니다. 두 메서드 모두 지정한 문자가 제거된 문자열을 반환한다는 점에서 동일한 결과를 제공합니다.

초보자에게는 replace() 메서드가 더 사용하기 쉽습니다. 단 두 개의 매개변수만 받기 때문입니다.

첫 번째 매개변수는 교체할 대상 문자이고, 두 번째 매개변수는 대체할 값입니다. 빈 문자열을 넣으면 해당 문자가 제거됩니다. 여러 문자를 처리해야 한다면 for 반복문을 활용하면 됩니다.

Python을 더 깊이 배우고 싶으신가요? 다양한 예제와 학습 자료를 통해 문자열 다루기 실력을 한 단계 끌어올려 보세요.