본문 바로가기

Python/Basic

[파이썬 기초] 파이썬 문자열 슬라이싱과 인덱싱 | python Basic python String slicing and Indexing

 

 

안녕하세요 오늘은 문자열 Slicing(슬라이싱) 과 문자열 Indexing(인덱싱)

에대해서 배워보겠습니다.

 

word1 = "1. If you do not walk today, you will have to run tomorrow"

word2 = "2. Put off for one day and ten days will pass"

word3 = "3. Time is gold"

 

우선 3가지의 변수에 다음과같은 명언을 대입하였습니다

저번시간을 떠올리면서 word3의 문자열의 길이는 어떻게 구 할까요?

len(word3)

이런식으로 해야합니다.

 

정답은 무엇일까요? 

혹시 12라고 생각하셨나요? ( 점포함해서)

네 아니였습니다. 왜냐하면

len() 함수는 문자열의 공백도 포함해서 숫자를 카운팅합니다.

공백이 총 3개이고 문자는 12개여서 len(word3)의 반환값은 15가 됩니다!

 

만약에 word3에서 is 라는 문자만 가져오고 싶은데 어떻게 해야할까요?

여기에서 쓰이는 것이 문자열 인덱싱이랑 슬라이싱입니다 

 

String Indexing(문자열 인덱싱)  : 

인덱싱은 무언가를 가리킨다는 의미입니다 그러면 문자열 인덱싱은 문자열들의 순서를 가리키는 것을 말합니다

    

   사람들은 사과가 하나 둘 셋 하면서 숫자를 세지만 

   컴퓨터0 1 2 3 ... 4.. 이렇게 셉니다

     

 

그러면 word3 = "3. Time is gold" 는 어떻게 세어질까요? 

 

"3. Time is gold"

 

        = 0

         = 1

공백    = 2

T         = 3 

       =  4 

 

이렇게 됩니다. 자 파이썬에서 문자열의 순서도 알았으니

T 만을 뽑아?봅시다. 

변수 word3 에서의 3번째 입니다

word3[3] 이라고 하면 결과가 T 가 반환될것입니다. 결과를 보실까요?

 

그러면 2 에 위치한 공백을 출력해볼까요?

 

 

마지막으로 한가지더!

word3[-1] 은 무엇일까요? 

결과를 보니 이상한 결과가 나왔습니다

word3 = "3. Time is gold" 

 

-1 을 넣었더니 word3의 가장마지막 : d

-2 를 넣었더니 word3의                  l 

-3 를 넣었더니 word3의                 o

-4 를 넣었더니 word3의                 g

 

위의 결과로 보니 거꾸로 된다는 걸 알 수 있었습니다.

 

다음으로 넘어가서 문자열 슬라이싱을 알아보겠습니다

String Slicing(문자열 슬라이싱) : 문자열 슬라이싱은 한마디로 문자열을 자르는 것을 의미

마치 큰덩어리였던 문자열을 조그만한 덩어리자를 수 있습니다

 

word2 = "2. Put off for one day and ten days will pass" 

0번째 위치한 건 2 

1번째 위치한 건 . 

2번째 위치한 건 공백 

3번째 위치한 건 P

 

그러면 put은 3부터 5까지입니다

word2에서의 문자열중에서 3부터 5까지의 문자를 가져오게되면 하나의 단어 즉 put 을 가져오게 됩니다 

 

word2[3:6] 

이렇게 입력하면 3,4,5까지를 의미합니다. 

주의할점

   나타내고 싶은 범위의 마지막 숫자 +1 을 해주어야합니다

3:6 이라는 범위는 3<= x <6  이런 범위를 가지고 있습니다. 

그러면 word1에서의 not 을 출력하려면 어떻게 해야할까요?

 

.

.

.

.

.

.

.

 

맞추셨나요? ㅎㅎ

아무 숫자가없으면 문자열의 처음부터 라는 의미입니다.

예를 들어서 [:5] 는아래의 사진과같은 의미입니다.

문제를 조금더 풀어볼까요?

 

word1[:9]    처음부터 인덱스9까지 가아닌! 인덱스 8까지

word3[4:]    4번인덱스 부터 마지막까지 

word3[3:-5]  

 

word3 = "3. Time is gold"

d = -1

l  = -2 

o = -3

g = -4

공백 = -5

s  = -6 

 

처음부터 s까지 하고싶다면 s 의 자리가 -6이니까 +1을 해주면 -5를 넣어야 s까지 의 범위가 됩니다. 

 

결과 화면입니다.

 

이해가 되셨나요? 궁금하신 점은 댓글로 물어봐주세요