문자열 인덱싱과 슬라이싱

  • 인덱싱(indexing)은 ‘카리킨다’, 슬라이싱(slicing)은 무엇인가를 ‘잘라 낸다’는 의미를 갖고 있음

문자열 인덱싱

a = "Life is too short."
  • 위 코드에서 변수 a에 저장한 문자열의 각 문자마다 번호를 매기면 다음과 같음

    L i f e   i s   t o o   s h o r t .
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
  • “Life is too short.” 문자열에서 L은 첫 번째 자리를 뜻하는 숫자 0, i는 1. 이런식으로 계속 번호를 붙인 것.

      print(a[3])  # e
      print(a[17]) # .
    
    • a[3]이 뜻하는 것은 a라는 문자열의 네 번째 문자 e를 의미
    • 이와 같이 파이썬은 0부터 숫자를 셈
  • a[번호]는 문자열 안의 특정한 값을 뽑아 내는 역할을 하며 이러한 작업을 ‘인덱싱’이라고 함

문자열 인덱싱 활용

  • 문자열을 뒤에서부터 읽기 위해 -(빼기) 기호를 사용할 수 있음

      print(a[-1])   # .
      print(a[-3])   # r
    
    • a[-1] 은 뒤에서부터 세어 첫 번째가 되는 문자열을 말함
    • 왜 -0이 아닐까? ⇒ -0 = 0이기 때문에 a[-0]a[-0]과 똑같은 값을 보여줌!


문자열 슬라이싱

  • 문자열에서 단순히 한 문자만을 뽑아 내는 것이 아닌 ‘Life’ 또는 ‘Short’와 같은 단어를 뽑아내기 위해서는 다음과 같이 사용할 수 있음

      a = "Life is too short."
      b = a[0] + a[1] + a[2] + a[3]
        
      print(b)  # Life
    
  • 위와 같이 단순하게 접근할 수 있지만 파이썬에서는 ‘슬라이싱’ 기법이라는 좋은 방법을 제공

      a = "Life is too short."
      print(a[0:4])  # Life
    
    • a[0:4] 는 a 문자열. 즉 “Life is too short.” 문자열에서 자리 번호 0부터 4까지의 문자를 뽑아내는 것
    • 하지만 슬라이싱 기법으로 a[시작번호:끝번호]를 지정할 때 끝 번호에 해당하는 문자는 포함하지 않음
    • 즉, a[0:4]을 수식으로 나타내면 다음과 같음 → 0 ≤ a < 4

문자열 슬라이싱 활용

  • 슬라이싱을 할때 항상 시작 번호가 0일 필요는 없음!

      print[5:7]    # is
      print[12:17]  # short
    
  • a[시작번호:끝번호] 에서 끝번호를 생략하면 시작번호부터 문자열의 끝까지 뽑아낼 수 있음

      print(a[12:])  # short.  
    
  • a[시작번호:끝번호] 에서 시작번호를 생략하면 처음부터 끝 번호까지 뽑아낼 수 있음

      print(a[:17])  # Life is too short
    
  • a[시작번호:끝번호] 에서 시작번호와 끝번호 모두 생략하면 문자열을 그대로 뽑아낼 수 있음

      print(a[:])    # Life is too short.
    
  • 슬라이싱에서도 인덱싱과 마찬가지로 -(빼기) 기호를 사용할 수 있음

      print(a[5:-7])   # is too
    
    • a[5:-7]a[5]에서 a[-8]까지를 의미. 이때도 a[-7]은 포함하지 않음

슬라이싱으로 문자열 나누기

  • 다음 예시는 자주 사용하는 슬라이싱 기법 중 하나

      a = "20250918Sunny"
      date = a[:8]
      wether = a[8:]
        
      print(date)     # 20250918
      print(wether)   # Sunny
    
    • 위의 예시는 문자열 a를 두 부분으로 나누는 기법 : 8번째 문자열을 기준으로 문자열 a를 양쪽으로 한번씩 슬라이싱 함
    • a[:8]a[8] 을 포함하지 않고 a[8:]a[8] 를 포함하기 때문에 8번째 문자열을 기준으로 하여 두 부분으로 나눌 수 있음


Pithon문자열을 Python으로 바꾸려면?

a = "Pithon"
a[1] = 'y'

print(a)   # Pithon
  • 결과는 당연히 바뀌지 않음!
    • 문자열의 요솟값은 바꿀 수 있는 값이 아니기 때문 ⇒ 그래서 문자열은 ‘변경 불가능한(immutable) 자료형’이라고도 불림
  • 하지만 앞에서 배운 슬라이싱 기법을 사용하면 Pithon문자열을 사용하여 Python 문자열을 만들 수 있음

      a = "Pithon"
      b = a[:1] + 'y' + a[2:]
        
      print(b)    # python
    

댓글남기기