Python 문자열 데이터 추출: 인덱싱과 슬라이싱 기법

인덱싱(Indexing): 위치 기반 요소 접근

문자열에서 특정 위치에 있는 단일 문자를 추출할 때는 인덱싱을 사용합니다. Python의 인덱스는 0부터 시작하며, 음수 인덱스를 사용하면 문자열의 끝에서부터 역순으로 접근할 수 있습니다.

location = "대한민국서울특별시"

# 양수 인덱스: 왼쪽에서 오른쪽으로 0부터 카운트
print(location[4])  # 5번째 문자인 '서' 출력
print(location[0])  # 첫 번째 문자인 '대' 출력

# 음수 인덱스: 오른쪽에서 왼쪽으로 -1부터 카운트
print(location[-1]) # 마지막 문자인 '시' 출력
print(location[-5]) # 뒤에서 5번째 문자인 '서' 출력

슬라이싱(Slicing): 부분 문자열 추출

슬라이싱은 문자열의 특정 범위를 잘라내어 부분 문자열을 생성하는 기능입니다. 기본 문법은 string[start:end]이며, 수학의 반열린 구간 [start, end)와 동일하게 시작 인덱스는 포함하지만 끝 인덱스에 해당하는 요소는 결과에서 제외됩니다.

text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

# 기본 슬라이싱: 인덱스 3부터 6 직전까지 추출
print(text[3:6])  # 'DEF' 출력 (인덱스 3, 4, 5)

# 시작 인덱스 생략: 맨 앞(인덱스 0)부터 추출
print(text[:5])   # 'ABCDE' 출력

# 끝 인덱스 생략: 지정된 인덱스부터 맨 끝까지 추출
print(text[20:])  # 'UVWXYZ' 출력

# 모두 생략: 전체 문자열 복사
print(text[:])    # 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 출력

# 음수 인덱스 활용: 뒤에서 5번째부터 뒤에서 2번째 직전까지
print(text[-5:-2]) # 'VWX' 출력

주의할 점: 기본 슬라이싱은 항상 왼쪽에서 오른쪽으로 진행됩니다. 따라서 시작 인덱스가 끝 인덱스보다 큰 값을 가지면 오류가 발생하지 않고 빈 문자열이 반환됩니다.

# 잘못된 방향 지정 (순방향 슬라이싱에서 start가 end보다 큼)
print(text[-2:-5])  # 결과: '' (빈 문자열)

슬라이싱과 스텝(Step): 방향과 간격 제어

세 번째 매개변수인 step을 추가하면 추출 방향과 간격을 제어할 수 있습니다. 완전한 문법은 string[start:end:step]입니다. 스텝의 부호는 방향을 결정하고(양수는 순방향, 음수는 역방향), 절댓값은 추출 간격을 결정합니다.

sequence = "0123456789ABCDEF"

# 순방향 스텝: 왼쪽에서 오른쪽으로 3칸씩 건너뛰며 추출
print(sequence[::3])    # '0369CF' 출력

# 역방향 스텝: 오른쪽에서 왼쪽으로 2칸씩 건너뛰며 추출
print(sequence[::-2])   # 'FDB97531' 출력

역방향 슬라이싱을 수행할 때는 start 인덱스가 end 인덱스보다 커야 합니다. 또한, 스텝이 음수일 때 시작 위치를 생략하면 자동으로 문자열의 맨 끝에서부터 시작합니다.

alphabet = "abcdefghijklmnopqrstuvwxyz"

# 인덱스 5부터 15 직전까지 3칸 간격으로 순방향 추출
print(alphabet[5:15:3])   # 'fio' 출력

# 맨 끝부터 인덱스 20 직전까지 2칸 간격으로 역방향 추출
print(alphabet[:20:-2])   # 'zxv' 출력

# 전체 문자열 역순 뒤집기 (가장 흔하게 사용되는 패턴)
print(alphabet[::-1])     # 'zyxwvutsrqponmlkjihgfedcba' 출력

슬라이싱 시 마지막 요소를 결과에 포함시키고 싶다면, end 인덱스를 아예 생략하거나 문자열 길이를 초과하는 값을 지정하여 반열린 구간의 제약을 우회할 수 있습니다.

태그: python String Indexing String Slicing Sequence Operations Python Syntax

6월 12일 18:34에 게시됨