파이썬3의 문자열은 내부적으로 (유니코드) 문자의 배열로 취급된다. 예를 들어보자.
>>> s=“Hello World”
|
문자열
|
H
|
e
|
l
|
l
|
o
|
w
|
o
|
r
|
l
|
d
| |
인덱스 (기본 방향)
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
인덱스 (역방향)
|
-11
|
-7
|
-6
|
-5
|
-4
|
-3
|
-2
|
-1
|
문자열에 포함된 각각의 문자에 매겨진 이 번호를 인덱스(index)라고 한다. 이 예에서 문자열의 길이는 11이고 인덱스는 0부터 시작한다. 인덱스가 1부터 시작하지 않고 0부터 시작함에 주의해야 한다. (다른 프로그래밍 언어에서도 배열의 인덱싱은 보통 0부터 시작한다.)
>>> s[0]
H
>>> s[6]
w
>>> s[-1]
d
|
마지막의 s[-1]과 같이 음수는 뒤에서부터 세는 것이다. 따라서 뒤에서 첫 번째 문자인 ‘d’가 된다.
>>> s[-2]
l
>>> s[-6] |
만일
>>> a=”python is the best.” |
라는 문자열에서 첫 단어를 뽑아내고 싶다면 아래와 같이 한다.
>>> b=a[0:6] |
인덱스 ‘0:6’ 이 뜻하는 것은 ‘0부터 5까지’ 이다. 끝 번호 6은 포함하지 않는다는 것에 주의해야 한다. 이렇게 콜론(:)을 이용하여 연속적인 인덱스를 지정하는 것을 슬라이싱(slicing)이라고 한다. 문자열의 마지막까지 지정하려면 끝 번호를 생략하면 된다.
>>> c = a[7:] # ‘is the best.’ 가 c에 저장된다. |
반대로 시작 번호가 생략되면 문자열의 처음부터 선택된다.
>>> d = a[:8] # ‘python is’ 가 d에 저장된다. |
그리고 시작 번호와 끝 번호가 모두 생략된다면, 즉 e=a[:] 이라고 하면 문자열 전체가 선택이 된다. 즉, e에는 a 문자열 전체가 저장된다.
슬라이싱에서도 인덱싱과 마찬가지로 음수를 사용할 수 있다.
>>> f = a[:-5] |
결과를 확인해 보기 바란다. 이 경우에도 끝 번호는 포함되지 않으므로 첫 문자부터 -6번 문자까지 뽑아져서 f에 저장된다. 슬라이싱을 정리하면 다음과 같다.
- s[m:n] 은 s[m] 부터 s[n-1] 까지의 부분 문자열이다.
예를 들어서 만약 문자열 h를 5번째 문자를 기준으로 둘로 나눠서 hl, hr에 정하고 싶다면 다음과 같이 하면 될 것이다.
>>> hl = h[:5]>>> hr = h[5:] |
이러한 기능을 이용해서 문자열 자체를 바꿀 수는 없다는 것에 주의하자. 즉, 다음과 같이 문자열의 일부분을 바꾸는 것은 불가능한다.
>>>a[0] = ’x’ #불가능하다 |
이는 문자열은 한 번 내용이 정해지면 내용을 읽는 수는 있지만 변경될 수는 없는 자료형이기 때문이다. (이러한 자료형을 immutable 하다고 한다.)
댓글 없음:
댓글 쓰기