이 튜토리얼에서는 내장 문자열 메서드, 정규식 등을 사용하여 Python 문자열의 문자를 바꾸는 다양한 방법을 다룹니다.
Python의 문자열은 일련의 유니코드 문자를 저장하는 내장 데이터 구조입니다. 목록 및 사전과 같은 일부 Python 데이터 구조와 달리 문자열은 변경할 수 없습니다. 즉, 기존 문자열을 수정할 수 없습니다.
그러나 문자열 작업 시 선행 및 후행 공백 제거, 대문자 변경, 문자 교체 등 문자열을 조작하고 싶을 수도 있습니다.
그렇다면 Python 문자열을 어떻게 조작합니까? 그리고 Python 문자열의 문자를 어떻게 바꾸나요? 이 튜토리얼에서는 다음 사항에 중점을 두고 이러한 질문에 답할 것입니다.
- Python 문자열의 불변성
- 문자열 조작을 위한 Python 문자열 메서드
- 문자열의 문자를 바꾸는 다양한 방법
시작하자…
목차
Python 문자열의 불변성
언급했듯이 Python 문자열은 변경할 수 없습니다. 따라서 기존 문자열을 수정할 수 없습니다. 기존 문자열을 수정할 수 없습니다.
예를 들어 “Python 프로그래밍!”이라는 문자열을 생각해 보세요.
다음과 같이 시작과 끝이 있는 슬라이스를 지정하여 인덱스와 하위 문자열을 사용하여 문자열의 단일 요소에 액세스할 수 있습니다.
>>> my_str = "Python programming!" >>> my_str[0] 'P' >>> my_str[4] 'o' >>> my_str[1:9] 'ython pr' >>> my_str[9] 'o'
문자 ‘o’를 숫자 ‘0’으로 바꾸고 싶다고 가정해 보겠습니다.
인덱스 4와 9에 o가 있다는 것을 알고 있습니다(위의 코드 조각 참조). 그러나 특정 인덱스의 문자를 ‘0’으로 직접 설정하려고 하면 다음 오류가 발생합니다.
>>> my_str[4] = '0' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment
Python은 기존 문자열에 대해 작동하고 필요한 변경 사항이 포함된 새 문자열을 반환하는 일련의 문자열 메서드를 제공합니다.
또한 읽어 보세요: 문자열 연산에 대한 Python 프로그램.
따라서 목록 이해, 루프 및 정규 표현식과 결합된 문자열 메서드를 사용하여 문자열 조작 작업을 수행할 수 있습니다. 이 튜토리얼에서는 Python 문자열에서 문자를 바꾸는 다양한 방법을 살펴보겠습니다.
Python 문자열에서 문자 바꾸기
Python 문자열의 문자나 하위 문자열을 대체하려는 사용 사례가 많이 있습니다. 그 중 일부는 다음과 같습니다.
- 텍스트 정리: 텍스트 데이터로 작업할 때 특정 문자를 바꿔서 텍스트를 정리해야 할 수도 있습니다. 예를 들어 특수 문자, 추가 공백 또는 원치 않는 기호를 제거하거나 교체합니다.
- 서식: 텍스트를 대문자로 변환하거나 소문자로 변환하는 등 텍스트 서식을 변경할 수 있습니다. 예를 들어 제목이나 표제에서 일관된 대문자 사용을 보장합니다.
- 데이터 마스킹: 형식을 유지하면서 민감한 데이터를 보호하기 위해 개인 식별 번호나 신용 카드 번호와 같은 민감한 정보를 마스킹해야 하는 경우가 많습니다.
- URL 및 경로 처리: URL 또는 파일 경로로 작업할 때 형식이 적절하고 웹 브라우저 또는 파일 시스템과 호환되는지 확인하기 위해 특정 문자를 바꿔야 할 수도 있습니다.
문자열에서 문자를 바꾸는 간단한 예를 살펴보겠습니다.
루프와 조건문을 사용하는 접근 방식으로 시작한 다음 동일한 결과를 달성하기 위한 다른 더 나은 방법에 대해 논의하겠습니다.
“Python 프로그래밍!” 문자열에서 ‘o’를 ‘0’으로 바꾸는 동일한 예를 살펴보겠습니다.
for 루프를 사용하여 문자열을 반복하고 특정 문자를 바꾸는 방법은 다음과 같습니다.
original_string = "Python programming!" new_string = "" for char in original_string: if char == "o": new_string += "0" else: new_string += char print(new_string)
이 접근 방식에서는 Original_string의 각 문자를 수동으로 반복합니다. 문자가 ‘o’이면 new_string에 ‘0’을 추가합니다. 그렇지 않으면 동일한 문자를 추가합니다. 이런 식으로 문자 교체를 수행하고 new_string을 빌드합니다.
# Output Pyth0n pr0gramming!
if 문과 함께 for 루프 및 조건 분기를 사용하는 것은 유지 관리하기 어렵습니다. 특히 하위 문자열이나 여러 문자를 바꿔야 하는 경우.
문자나 하위 문자열을 바꾸는 더 나은 방법이 있으며 다음 섹션에서 이에 대해 살펴보겠습니다.
#1. str.replace() 사용
문자열 메서드인 replacement()를 사용하여 문자나 하위 문자열을 다른 문자열로 바꿀 수 있습니다. str.replace(old, new)를 사용하면 이전 문자나 부분 문자열이 모두 새 문자나 부분 문자열로 대체됩니다.
여기서는 Original_string의 숫자 ‘0’과 함께 replacement() 메소드 문자 ‘o’를 사용합니다.
original_string = "Python programming!" new_string = original_string.replace("o", "0") print(new_string)
결과 문자열은 new_string에 있습니다.
# Output Pyth0n pr0gramming!
#2. List Comprehension 및 Join() 메소드 사용
Python 문자열의 문자를 바꾸려면 문자열 메서드인 Join()과 함께 목록 이해를 사용할 수 있습니다.
예제를 어떻게 다시 작성할 수 있는지 살펴보겠습니다.
- 우리는 Original_string의 각 문자를 반복하기 위해 목록 이해를 사용할 수 있습니다. 문자가 ‘o’이면 ‘0’으로 바꾸고 그렇지 않으면 동일한 문자를 유지합니다.
- 그런 다음 str.join()을 사용하여 이러한 문자를 단일 문자열로 결합하여 new_string을 생성합니다. 이는 문자열에서 단일 문자를 바꿔야 할 때 반복 및 조건 분기에 대한 보다 간결한 대안입니다.
original_string = "Python programming!" new_string = ''.join(['0' if char == 'o' else char for char in original_string]) print(new_string)
예상되는 결과는 다음과 같습니다.
# Output Pyth0n pr0gramming!
#삼. 정규식 사용
Python 문자열의 문자를 바꾸는 또 다른 방법은 정규식(regex)을 사용하는 것입니다. Python에는 내장된 다시 모듈 정규식 일치 작업의 경우. 정규식을 사용하면 검색할 패턴, 검색할 문자열, 일치하는 패턴을 바꿀 문자열을 지정할 수 있습니다.
여기서는 re.sub(pattern, replacement, string) 구문과 함께 re 모듈의 sub() 함수를 사용합니다.
import re original_string = "Python programming!" new_string = re.sub(r'o', '0', original_string) print(new_string)
r’o’ 패턴은 Original_string에서 문자 ‘o’가 나타나는 모든 항목과 일치하고 이를 ‘0’으로 바꿉니다.
# Output Pyth0n pr0gramming!
정규식을 사용하여 더 복잡한 패턴을 일치시킬 수 있습니다. 신용카드 번호를 마스킹하는 예를 들어보겠습니다. 마지막 네 자리를 제외한 모든 숫자를 ‘X’로 바꾸고 싶다고 가정해 보겠습니다. 방법은 다음과 같습니다.
import re def mask_credit_card(card_number): # Use regular expressions to match and replace characters masked_number = re.sub(r'\d(?=\d{4})', 'X', card_number) return masked_number # Example usage: credit_card_number = "1234567898765432" masked_number = mask_credit_card(credit_card_number) print(masked_number)
결과는 다음과 같습니다.
# Output XXXXXXXXXXXX5432
정규식을 단순하게 유지하기 위해 하이픈을 포함하지 않았지만 원하는 경우 필요에 따라 예제를 수정할 수 있습니다.
#4. str.maketrans() 및 str.translate() 사용
Python의 str.maketrans() 및 str.translate() 메서드는 문자열에서 문자 수준 번역 및 대체를 수행하는 데 사용됩니다.
str.maketrans() 작동 방식
maketrans() 메서드는 문자열에서 문자를 바꾸는 방법을 지정하는 변환 테이블을 만드는 데 사용됩니다. str.maketrans(x, y) 구문과 함께 사용할 수 있습니다. 여기:
- x는 바꾸려는 문자가 포함된 문자열입니다.
- y는 x를 대체할 문자가 포함된 문자열입니다.
maketrans() 메서드는 x에서 y로의 매핑을 기반으로 변환 테이블을 생성합니다. 그런 다음 str.translate() 메서드와 함께 이 변환 테이블을 사용하여 실제 교체를 수행할 수 있습니다.
str.translate() 작동 방식
str.translate() 메서드를 사용하여 str.maketrans()에서 생성된 변환 테이블을 문자열에 적용할 수 있습니다. 변환 테이블에 정의된 매핑을 기반으로 문자별 교체를 수행합니다. 그리고 지정된 문자 대체가 적용된 새 문자열을 반환합니다.
Translate() 메서드를 사용하는 방법은 다음과 같습니다.
new_string = original_string.translate(translation_table)
- Original_string: 수정하려는 입력 문자열입니다.
- Translation_table: 문자 매핑을 정의하는 str.maketrans()를 사용하여 생성된 번역 테이블입니다.
maketrans() 및 str.translate() 메소드를 결합하여 다음과 같이 예제를 다시 작성해 보겠습니다.
original_string = "Python programming!" translation_table = str.maketrans('o', '0') new_string = original_string.translate(translation_table) print(new_string)
여기서는 ‘o’가 ‘0’으로 대체되어야 함을 지정하기 위해 str.maketrans(‘o’, ‘0’)을 사용하여 변환 테이블을 생성합니다. 그런 다음 원본_문자열에 대한 번역() 메서드를 사용하여 이 번역을 적용하고 결과적으로 new_string이 생성됩니다.
# Output Pyth0n pr0gramming!
이러한 메서드는 문자열의 문자 교체 및 기타 문자 수준 조작과 같은 작업에 유용합니다.
결론
우리가 배운 것을 복습해 봅시다.
Python 문자열은 변경할 수 없습니다. 따라서 Python 문자열의 문자를 바꾸려는 경우 특정 인덱스의 문자를 재할당할 수는 없습니다. Python 문자열에서 한 문자 또는 여러 문자를 바꾸기 위해 다음 접근 방식을 살펴보았습니다.
- old의 모든 인스턴스를 새 하위 문자열로 바꾸려면 str.replace(old, new)를 사용하십시오.
- 목록 이해와 Join() 메서드를 사용할 수도 있습니다. 목록 이해를 사용하여 문자 교체를 수행하고 Join() 메서드를 사용하여 문자 목록을 문자열로 결합합니다.
- 정규식과 패턴 일치를 사용하여 문자 또는 패턴 발생을 바꿀 수 있습니다. re.sub(pattern, replacement, string)과 함께 sub() 함수를 사용하세요.
- 번역 테이블을 얻으려면 str.maketrans()를 사용하고 번역 테이블을 원래 문자열에 적용하려면 번역() 메서드를 사용하세요.
이러한 기술을 더 잘 이해하려면 몇 가지 예를 코딩해 보세요. 다음으로 Python 문자열에서 마지막 문자를 제거하는 방법을 알아보세요.