문자열 인덱싱과 슬라이싱
✒️ 2025-05-19 10:32 내용 수정
Do it! 점프 투 파이썬(2017년 발행) 내용을 정리
- Java와 JavaScript에서도 문자열은 데이터의 집합으로, 각각의 문자 하나가 위치한 자리를 인덱스로 알 수 있다.
1. 문자열 길이 구하기
- 문자열의 전체 길이는
len()함수로 구할 수 있다.- Java나 JavaScript 등에서도
length()와 같은 함수로 구할 수 있었다. - 공백도 문자열의 길이에 포함된다.
- Java나 JavaScript 등에서도
>>> a = "I'm bullet proof!!"
>>> len(a)
18

2. 인덱싱
- 문자열 길이를 구하는 것과 인덱싱은 개인 체감상 자주 사용하는 기능이다.
- 전체 문자열 길이를 구하고 각 인덱스 위치에서 문자를 확인하는 등의 함수를 많이 사용했었다.
- Python에서도 문자열의 가장 처음 위치는
0이고, 마지막 위치는len()-1이다.- 인덱스가
len()-1를 초과할 경우 인덱스 범위 에러가 발생한다.
- 인덱스가
- 문자열의 특정 인덱스의 문자열을 확인하려면
문자열변수[index]를 사용한다.
>>> a = "I'm bullet proof!!"
>>> len(a)
18
>>> a[0]
'I'
>>> a[17]
'!'
>>> a[18]
Traceback (most recent call last):
File "<python-input-7>", line 1, in <module>
a[18]
~^^^^
IndexError: string index out of range
- 문자열을 뒤에서부터 읽기 위해 인덱스에
-를 붙여 사용할 수 있다.
>>> a = "I'm bullet proof!!"
>>> a[-1]
'!'
>>> a[-5]
'o'
>>> a[-0]
'I'

3. 슬라이싱
- 문자열의 길이와 인덱스를 확인하는 방법을 배웠으므로, 이를 이용하여 문자열을 잘라낼 수 있다.
>>> a = "No we're not gonna stop until we reach it"
>>> b = a[6] + a[-2] + a[19] + a[4] + " " + a[-17] + a[-19]
>>> b
'rise up'
변수[시작idx:종료idx]를 사용하여 문자열 범위를 잘라낼 수 있다.- 여기서 시작 인덱스의 문자는 포함되고, 종료 인덱스의 문자는 포함되지 않는다.
시작idx <= 변수 < 종료idx
>>> a = "No we're not gonna stop until we reach it"
>>> c = a[19:23]
>>> c
'stop'
변수[시작idx:]: 시작 인덱스부터 문자열 끝까지 잘라낸 후 반환한다.
>>> a = "No we're not gonna stop until we reach it"
>>> d = a[3:]
>>> d
"we're not gonna stop until we reach it"
변수[:종료idx]: 처음부터 마지막 인덱스 미만까지의 문자열을 잘라낸 후 반환한다.
>>> a = "No we're not gonna stop until we reach it"
>>> f = a[:23]
>>> f
"No we're not gonna stop"
-기호를 사용해서 범위를 지정할 수 있다.
>>> a = "No we're not gonna stop until we reach it"
>>> g = a[3:-12]
>>> g
"we're not gonna stop until"
- 문자열은 변경 불가능한 자료형이기 때문에 문자열의 요소값은 바꿀 수 없다.
- 대신에 바꾸려는 위치 전후의 문자열을 잘라 새로운 문자를 포함한 문자열을 생성할 수 있다.
>>> a = "Hallo"
>>> a[1] = "e"
Traceback (most recent call last):
File "<python-input-33>", line 1, in <module>
a[1] = "e"
~^^^
TypeError: 'str' object does not support item assignment
# 문자열을 잘라 새 문자열을 생성
>>> a[:1] + "e" + a[2:]
'Hello'