Python 문자열 조작 핵심 기법

Python에서 문자열을 다루는 다양한 방법을 살펴본다. 공백 제거, 복사, 결합, 검색, 비교, 분할 등 실무에서 자주 활용하는 기술들을 중심으로 설명한다.

1. 양쪽 및 한쪽 공백 제거

strip()은 문자열 양쪽의 지정 문자를 제거하며, 인자 미지정 시 공백이 기본값이다. lstrip()은 왼쪽, rstrip()은 오른쪽만 제거한다.

>>> msg = '  python  '
>>> msg.strip()
'python'

>>> msg.lstrip()
'python  '

>>> msg.rstrip()
'  python'

2. 문자열 할당과 복사

Python의 문자열은 불변 객체이므로 단순 할당 시 동일 객체를 참조한다.

>>> origin = 'data science'
>>> copied = origin
>>> origin is copied
True

3. 문자열 결합 방식

더하기 연산자는 간단하지만, 다수 연결 시 join()이 메모리 효율이 우수하다. join()은 구분자를 앞에 배치하는 점에 유의한다.

# 비효율적인 방식 (루프 내 반복 시)
>>> part_a = 'machine'
>>> part_b = 'learning'
>>> part_a + ' ' + part_b
'machine learning'

# 권장 방식
>>> items = ['2024', '03', '15']
>>> '-'.join(items)
'2024-03-15'

# 구분자로 문자열 분할 대상 연결
>>> connector = '::'
>>> connector.join(['api', 'v2', 'users'])
'api::v2::users'

4. 위치 기반 검색

find()index()는 모두 부분 문자열 위치를 반환하나, 실패 시 find()-1을, index()는 예외를 발생시킨다.

>>> text = 'artificial intelligence'
>>> text.find('i')
5

>>> text.find('z')
-1

>>> text.index('i')
5

>>> text.index('z')
Traceback (most recent call last):
  ...
ValueError: substring not found

5. 대소 비교

Python 3에서는 cmp()가 제거되었다. 필요 시 부등호 조합으로 대체한다.

>>> x, y = 100, 80
>>> (x > y) - (x < y)
1

6. 멤버십 확인

>>> phrase = 'neural network'
>>> 'net' in phrase
True
>>> 'deep' not in phrase
True

7. 길이 측정

>>> len('hello world')
11

8. 대소문자 변환

>>> word = 'PyThOn'

>>> word.lower()      # 소문자 변환
'python'

>>> word.upper()      # 대문자 변환
'PYTHON'

>>> word.swapcase()   # 대소문자 반전
'pYtHoN'

>>> 'hello world'.capitalize()  # 첫 글자만 대문자
'Hello world'

9. 중앙 정렬 및 채움

>>> title = 'report'
>>> title.center(20, '=')
'=======report======='

10. 출현 횟수 세기

>>> 'mississippi'.count('s')
4

11. 형태 검증

>>> s = 'Python3'

>>> s.startswith('Py')   # 접두사 확인
True

>>> s.endswith('3')      # 접미사 확인
True

>>> 'abc123'.isalnum()   # 영문자 또는 숫자 구성
True

>>> 'hello'.isalpha()    # 전체가 알파벳
True

>>> '404'.isdigit()      # 전체가 数字
True

>>> '   '.isspace()      # 전체가 공백
True

>>> 'lower'.islower()    # 소문자 판별
True

>>> 'UPPER'.isupper()    # 대문자 판별
True

>>> 'Title Case'.istitle()  # 타이틀 케이스
True

12. 슬라이싱 문법

>>> digits = '0123456789'

# 기본 구문: [시작:끝:간격]
>>> digits[0:3]     # 0번부터 2번까지
'012'

>>> digits[5:]       # 5번부터 끝까지
'56789'

>>> digits[:4]       # 처음부터 3번까지
'0123'

>>> digits[-3:]      # 뒤에서 3개
'789'

>>> digits[::2]      # 2칸 간격
'02468'

>>> digits[::-1]     # 역순
'9876543210'

>>> digits[-5:-2]    # 뒤에서 5번째부터 뒤에서 3번째 전까지
'567'

문자열은 불변 객체이므로 모든 조작 결과는 새로운 객체를 생성하여 반환한다. 슬라이싱 역시 원본을 변경하지 않고 새 문자열을 만든다.

태그: python 문자열-조작 슬라이싱 JOIN strip

6월 14일 20:42에 게시됨