파이썬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 하다고 한다.)
'프로그래밍언어.Lib > 파이썬' 카테고리의 다른 글
파이썬의 %로 문자열을 포매팅(formatting)하는 방법 (0) | 2015.05.23 |
---|---|
파이썬 문자열의 곱셈과 덧셈 (0) | 2015.05.23 |
파이썬의 문자열 개요 (0) | 2015.05.23 |
파이썬의 산술 연산자 (0) | 2015.05.23 |
파이썬의 숫자형 (0) | 2015.05.23 |