22.2 문자열을 인덱스 범위로 접근하기

이번에는 인덱스로 범위를 지정하여 문자열의 일부만 가져와보겠습니다.

  • 문자열[시작인덱스:끝인덱스]
>>> hello = 'Hello, world!'
>>> hello[0:12]
'Hello, world'
>>> hello[0:13]
'Hello, world!'

[ ] 안에 시작 인덱스와 끝 인덱스를 지정하면 해당 범위의 문자열을 가져올 수 있습니다(문자열 슬라이스). 여기서 주의할 점이 있는데 끝 인덱스는 가져오려는 인덱스보다 1을 더 크게 지정해야 합니다. 따라서 길이가 13인 문자열을 처음부터 끝까지 가져오려면 [0:12]가 아닌 [0:13]이어야 합니다.

다음과 같이 실행해보면 쉽게 이해할 수 있습니다. hello[1:1]처럼 시작 인덱스와 끝 인덱스를 같은 숫자로 지정하면 아무 문자도 가져오지 않습니다. hello[1:2]처럼 끝 인덱스를 1이 더 크게 지정해야 문자 하나를 가져옵니다.

>>> hello = 'Hello, world!'
>>> hello[1:1]
''
>>> hello[1:2]
'e'

이제 시작, 끝 인덱스에 다른 숫자를 넣어서 가져와봅니다. 특히 시작, 끝 인덱스에 음수를 넣어서 범위를 표현할 수도 있습니다.

>>> hello = 'Hello, world!'
>>> hello[3:5]
'lo'
>>> hello[3:-1]
'lo, world'
>>> hello[-10:12]
'lo, world'

이번에는 인덱스를 생략하는 방법을 사용해보겠습니다. 인덱스를 생략하는 방법은 문자열의 길이를 몰라도 되기 때문에 자주 쓰이는 방식입니다. 주로 문자열의 마지막 일부분만 출력할 때 사용합니다.

>>> hello = 'Hello, world!'
>>> hello[:5]
'Hello'
>>> hello[5:]
', world!'
>>> hello[:]
'Hello, world!'

hello[:5]와 같이 시작 인덱스를 생략하면 문자열의 처음부터 끝 인덱스 직전까지 가져오고, hello[5:]와 같이 끝 인덱스를 생략하면 시작 인덱스부터 문자열의 마지막까지 가져옵니다. 또는, hello[:]와 같이 시작 인덱스와 끝 인덱스를 모두 생략하면 전체 문자열을 가져올 수도 있습니다.

이번에는 len을 응용하여 전체 문자열을 가져와보겠습니다.

>>>hello = 'Hello, world!'
>>> hello[0:len(hello)]
'Hello, world!'
>>> hello[:len(hello)]
'Hello, world!'

끝 인덱스는 가져오려는 인덱스보다 1을 더 크게 지정한다고 했으므로 len(hello)에서 1을 빼지 않아야 합니다. 즉, 길이가 13인 문자열은 [0:13]이라야 전체 문자열을 가져옵니다.

참고 | 문자열과 for 반복문

for 반복문에 문자열을 지정하면 문자를 하나씩 가져옵니다.

>>> for i in 'Hello':
...     print(i, end=' ')
...
H e l l o

여기서 in 연산자는 특정 문자가 있는지 확인할 때 사용할 수 있습니다.

>>> 'e' in 'Hello'
True