python 문자열 추출 중 인덱싱에 대하여 알아보겠습니다!

파이썬 문자열 핵심 문법: 인덱싱(Indexing)을 통한 데이터 추출
파이썬에서 문자열은 문자들이 연속적으로 나열된 컬렉션(Collection) 데이터형입니다. 이 문자열 안에서 우리가 원하는 특정 위치의 문자 하나를 콕 집어 꺼내오는 행위를 '인덱싱(Indexing)'이라고 합니다.
데이터 엔지니어링 관점에서 보면, 수많은 텍스트 데이터 중 필요한 정보만 골라내는 추출(Extract) 단계의 가장 기본이 되는 기술이기도 합니다.
결국 컬렉션에서 데이터를 골라올테니까요! ㅎㅎ
1. 인덱싱의 본질과 특징
차원 축소(Dimension Reduction)의 개념
일반적인 데이터 분석(NumPy, Pandas 등)에서 인덱싱은 '차원 축소'라는 중요한 본질을 가집니다. 예를 들어 2차원 표(행렬) 데이터에서 특정 행을 인덱싱하면 1차원 선(벡터) 데이터로 차원이 한 단계 내려가게 됩니다.
단, 문자열은 예외입니다. > 파이썬에는 '문자(Character)'라는 독립된 데이터 타입이 없고, 문자 하나도 결국 '길이가 1인 문자열'로 취급합니다. 따라서 문자열을 인덱싱해도 데이터의 타입이나 차원은 문자열(str) 그대로 유지됩니다.
불변성(Immutability)에 따른 제약
앞서 문자열의 특징에서 배웠듯이 파이썬의 문자열은 수정이 불가능합니다. 따라서 인덱싱을 통해 값을 확인하고 추출하는 것은 가능하지만, 특정 위치의 값을 직접 수정하는 것은 문법적으로 금지되어 있습니다.
sample = 'pineapple'
# ❌ 오류 발생 (TypeError)
# 문자열의 특정 자리를 직접 변경할 수 없습니다.
sample[0] = 'P'
2. 파이썬 인덱싱 문법과 작동 원리
파이썬은 독특하게도 앞에서부터 세는 정방향 인덱스와 뒤에서부터 역으로 세는 역방향 인덱스를 모두 지원합니다.
- 정방향 인덱스: 0부터 시작하여 오른쪽으로 1씩 증가합니다. (0, 1, 2, 3 ...)
- 역방향 인덱스: 가장 마지막 문자인 -1부터 시작하여 왼쪽으로 1씩 감소합니다. (-1, -2, -3 ...)
💡 인덱스의 계산 팁 (커서 원리)
인덱스 숫자를 문자와 문자 사이의 '경계선(커서)'이라고 생각하시면 이해하기 쉽습니다. 커서를 해당 인덱스 번호에 두고, 그 커서의 오른쪽에 있는 문자를 취한다고 기억해 주세요.
3. 더미 데이터를 활용한 인덱싱 실습
직접 'pineapple'이라는 문자열을 가지고 원하는 문자를 추출해 보겠습니다.
# 실습용 더미 데이터 선언
sample = 'pineapple'
정방향 인덱싱으로 'a' 추출하기
'pineapple'에서 'a'의 위치를 앞에서부터 세어보면 6번째 문자에 위치합니다. 파이썬은 0부터 시작하므로 인덱스 번호는 5가 됩니다.
# 정방향 인덱스 사용 (0부터 시작)
print(sample[5]) # 출력: a
역방향 인덱싱으로 똑같이 'a' 추출하기
이번에는 뒤에서부터 거꾸로 세어보겠습니다. 맨 뒤의 'e'가 -1이므로, 역산해 보면 'a'는 -6의 위치에 해당합니다.
# 역방향 인덱스 사용 (-1부터 시작)
print(sample[-6]) # 출력: a
💡 실무 적용 결론: "가까운 쪽을 선택하세요"
정방향과 역방향 중 어느 것을 써야 할지 고민되실 수 있습니다. 기준은 아주 심플합니다. 추출하려는 문자가 앞쪽에 가까우면 정방향(0, 1, 2...)을, 뒤쪽에 더 가깝다면 역방향(-1, -2...)을 선택하는 것이 직관적이며 계산 실수를 줄이는 가장 좋은 방법입니다.
4. 주의해야 할 예외: IndexError
존재하지 않는 인덱스 번호에 접근하려고 하면 파이썬은 범위를 벗어났다는 에러를 발생시킵니다.
sample = 'pineapple' # 총 9글자 (인덱스 범위: 0 ~ 8)
# ❌ IndexError: string index out of range 발생
print(sample[10])
데이터를 다룰 때 항상 문자열의 길이(len(sample))를 염두에 두고 인덱싱 범위를 초과하지 않도록 주의해야 합니다.
오늘의 한 마디
항상 이 한 마디를 쓰려고 하지만 가끔은 할 말이 없거나 생각한 것이 없는 경우도 있습니다.
강의를 들으면서 뭔가 다른 사람들은 먼저 앞으로 나아가는 것 같고 그런 생각이 듭니다. 하지만 비교하면 인생의 불행이 시작됩니다. 따라서 나만의 길을 걸어가면 되고 스터디가 필요한 내용이 나오면 그때 스터디를 시작하면 되지 않을까? 라는 생각을 합니다.
내가 행복하다면 그 길을 계속 걸어가면 좋겠습니다.
'코딩 개발 > Python' 카테고리의 다른 글
| Python - 문자열 처리 함수 (split(), join(), lower(), upper(), strip() 형제들, find(), index(), in, startwith, endswith, replace()) (0) | 2026.07.07 |
|---|---|
| Python - 데이터 추출 슬라이싱(Slicing) - 변수명[시작 인덱스 : 끝 인덱스 : step(간격, 기본값1, 생략가능) (0) | 2026.07.06 |
| Python - 단일 데이터형 (수치형) (0) | 2026.07.03 |
| Python - 주석, 변수, 상수, 리터럴, 네이밍 컨벤션 (3) | 2026.07.02 |
| Python 1일차 (in AI 데이터 엔지니어 과정) (1) | 2026.07.01 |