프로그래밍 언어/Python

파이썬(python) #3_ 문자열 인덱싱과 슬라이싱

Tigercow.Door 2017. 11. 4. 17:43

안녕하세요.

오늘은 파이썬에서 문자열 인덱싱(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)


이렇게 해서 이번 포스팅에서는 파이썬에서 문자열 인덱싱과 슬라이싱에 대해서 알아보았습니다.

다음 포스팅에서는 파이썬의 문자열 포매팅과 문자열 관련 함수들에 대해서 알아보겠습니다.


728x90