안녕하세요.
오늘은 파이썬에서 문자열 인덱싱(indexing)과 슬라이싱(slicing)에 대해서 알아보겠습니다.
궁금하시거나 오류에 부딪히신 분은 언제든 댓글에 남겨주시면 최대한 답변드리겠습니다 :)
1. 문자열 인덱싱(Indexing)
인덱싱이란 말이 뭘까요?
인덱싱이라는 것은 무엇인가를 '가리킨다'는 의미입니다.
다시 말해서 긴 문자열에서 어떤 글자나 특정 위치를 가리키는 것을 말합니다.
위의 사진과 같이 a에 저장된 'Hello, python world!!'라는 문자열에서 각 문자마다 번호를 매겨 보겠습니다.
H |
e |
l |
l |
o |
, |
|
p |
y |
t |
h |
o |
n |
|
w |
o |
r |
l |
d |
! |
! |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
처음 시작하는 글자 H를 0이라는 번호에서 시작하여 ! 문자까지 다 번호를 매겨보았습니다.
그렇다면 위의 문자열에서 o는 몇 번 위치에 있을까요?
네, 위의 표에서 확인할 수 있듯이 o라는 문자는 4번, 11번, 15번 위치에 있습니다.
그럼 a라는 변수에 저장된 문자열에서 12번 위치에 있는 글자는 무엇일까요?
네, 바로 n이라는 문자가 표에서 확인할 수 있듯이 12번 위치에 있습니다.
이러한 것이 문자열 인덱싱입니다.
파이썬에서도 이러한 인덱싱을 지원하고 있습니다. 아래 사진을 통해 살펴볼까요?
여기서 주의해야 할 점은, 표에서도 볼 수 있지만 파이썬에서는 0부터 숫자를 세는 점 입니다.
1-1. 문자열 인덱싱 활용하기
위에서 알아본 바와 같이, a[9]라는 것은 a라는 문자열에서 9번위치를 말합니다.
즉, 몇가지 예시를 본다면 아래 사진과 같습니다.
그런데, [ ]여기 안에 음수를 넣으면 어떻게 될까요?
a[-1] 또는 a[-5]는 무엇을 반환할까요?
위의 사진에서 볼 수 있듯이 a[-1]은 a라는 문자열에서 뒤에서 첫번째 문자를 말하고 a[-5]는 뒤에서 다섯번째 문자를 말합니다.
즉, 표로 정리해 본다면 다음과 같습니다.
H |
e |
l |
l |
o |
, |
|
p |
y |
t |
h |
o |
n |
|
w |
o |
r |
l |
d |
! |
! |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
-21 |
-20 |
-19 |
-18 |
-17 |
-16 |
-15 |
-14 |
-13 |
-12 |
-11 |
-10 |
-9 |
-8 |
-7 |
-6 |
-5 |
-4 |
-3 |
-2 |
-1 |
2. 문자열 슬라이싱(Slicing)
인덱싱은 무엇인가를 가리키는 것을 말한다고 하였습니다. 그럼 슬라이싱은 무엇일까요?
문자열 슬라이싱은 특정 문자열에서 무엇인가를 잘라내는 것 입니다.
위에서 보았던 문장을 가져와보도록 하겠습니다.
'Hello, python world!!' 라는 문자열에서 하나의 문자만 뽑아내는 것이 아니라 world라는 단어를 뽑아내는 방법은 없을까요?
바로 아래와 같이 하면 될 것 입니다.
그런데 위의 방식으로 긴 단어를 뽑아낸다면..? 생각보다 많이 불편할 수도 있습니다.
그래서 파이썬은 위의 방법보다 더 간편하고 좋은 방법을 내장하고 있습니다.
그것이 바로 파이썬에서 슬라이싱(Slicing)이라고 부르는 것입니다.
자세한 설명을 하기 앞서, 위에서 뽑아낸 world라는 단어를 슬라이싱으로 통해 다시 확인해보겠습니다.
처음에 적었던 긴 코드보다 더욱 짧아진 코드로 'world'라는 단어가 출력된 것을 확인할 수 있습니다.
그럼 a[14:19]라는 것이 의미하는 것은 무엇일까요?
결과를 통해 유추해본다면, 14번째부터 19번째까지 문자를 출력하는 것?..
비슷하지만 정확한 의미는, 'a라는 문자열에서 14번째위치의 문자부터 19번째위치의 앞의 문자까지 출력해!' 입니다.
즉, a[시작번호:끝번호] 로써 입력하면 시작번호부터 끝번호 앞의 문자까지, 끝번호의 문자는 제외하고 출력됩니다.
몇 개의 예시를 살펴보면 아래와 같습니다.
2-1. 문자열 슬라이싱 활용하기
문자열 슬라이싱을 할때 일반적으로 a[시작번호:끝번호]를 적어야하지만, 꼭 시작번호와 끝번호를 적어야 할 필요는 없습니다.
슬라이싱을 할때 끝번호를 생략하면 시작번호부터 그 문자열의 끝까지 출력합니다.
비슷한 개념으로, 슬라이싱을 할때 시작번호를 생략하면 그 문자열의 처음부터 끝번호의 앞의 문자까지 출력합니다.
그럼, 시작번호와 끝번호 모두 생략하면 어떻게 될까요?
네, 해당 문자열의 처음부터 끝까지를 출력합니다. 즉, a == a[:] 입니다.
또한 문자열 슬라이싱에서도 인덱싱과 마찬가지로 음수를 사용할 수 있습니다.
위의 사진에서 a[3:-3]은 a[3]부터 a[-4]까지 출력되는 것이며
a[10:-5]는 a[10]부터 a[-6]까지 출력되는 것입니다.
3. 문자열 인덱싱과 슬라이싱을 활용한 예제
마지막으로 위에서 배운 인덱싱과 슬라이싱기법을 이용한 간단한 예제를 확인하겠습니다.
사용자에게 주민등록번호 앞자리 7글자를 입력받아서
~년 ~월 ~일에 태어났고, 성별은 어떻게 되는지 출력하는 프로그램을 설계합니다.
즉, 아래 사진과 같은 결과가 출력되면 됩니다.
코드는 바로 아래에 첨부합니다.
꼭 직접 구현해보시기를 바랍니다 :)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # koreaRRN.py # 사용자에게 주민번호 7글자를 입력받아서 결과 출력하기 # Tigercow.Door print("주민번호 앞에서부터 7글자를 입력하세요.") RRN = input() year = RRN[0:2] month = RRN[2:4] day = RRN[4:6] sex = RRN[6] print("입력하신분께서는 19%s년 %s월 %s일에 태어나셨고, "%(year, month, day),end='') if (sex == '1'): print ("성별은 남자입니다.") else: print ("성별은 여자입니다.") | cs |
* 참고
점프 투 파이썬(https://wikidocs.net/book/1)
이렇게 해서 이번 포스팅에서는 파이썬에서 문자열 인덱싱과 슬라이싱에 대해서 알아보았습니다.
다음 포스팅에서는 파이썬의 문자열 포매팅과 문자열 관련 함수들에 대해서 알아보겠습니다.
'프로그래밍 언어 > Python' 카테고리의 다른 글
파이썬(python) #6_ 리스트 자료형 (0) | 2017.12.29 |
---|---|
파이썬(python) #5_ 문자열 관련 함수들 (0) | 2017.11.19 |
파이썬(python) #4_ 문자열 포매팅 (0) | 2017.11.12 |
파이썬(python) #2_ 파이썬의 숫자형과 문자열 자료형 (1) | 2017.11.01 |
파이썬(python) #1_ 파이썬이란 무엇인가? (0) | 2017.11.01 |