String Slicing

문자열 슬라이싱에 대한 이해


개념

문자열 슬라이싱이란 이름에서 유추할 수 있듯, 문자열의 일부분을 잘라내거나 추출하는 방식이다. 문자열 조작 시에 슬라이싱은 아주 빠르게 진행되기 때문에 아주 유용하다.

정식적인 정의는, 연속적인 객체들(ex: 리스트, 튜플, 문자열)에서 범위를 지정해 선택해서 객체들을 가져오는 방법 및 표기법을 의미한다.

형태

Array라는 이름의 연속적인 객체가 있다고 하자. 그렇다면 기본적인 형태는 다음과 같다.

1
Array[start:end:step]
  • 첫번째 인수로서 start는 말그대로 어디서 시작할 것 인지이다. 0을 넣으면 처음부터 가져오고 2를 넣으면 세번째 값부터 가져오게 된다.

  • 두번째 인수로서 end는 어디서 끝낼지이다(정확히는 어디 ‘전’에서 끝낼지). 4를 넣으면 3번째 index에서 종료한다. -1을 넣으면 맨 끝 문자 이전(즉 맨 뒤에서 두번째 문자까지 출력)에서 끝낸다.

  • 세번째 인수로서 step은 얼마만큼 건너뛸 것인지이다. 1을 넣으면 한칸씩 띄우므로 기본값으로 동일하다.(세번째 인수를 생략하면 1을 넣은 것과 같다) 만약 2를 넣는다면 두칸씩 띄어 읽는다(ex 1 3 5 7 이런식으로).

예시

‘안녕하세요’ 라는 문자열을 보자. 이는 다음과 같이 indexing할 수 있다.

1
2
3
0  1  2  3  4
안 녕 하 세 요
-5 -4 -3 -2 -1

S = ‘안녕하세요’라고 하면 다음이 S를 slicing한 결과물이다.

  1. S[1:4] == 녕하세
  2. S[1:-2] == 녕하
  3. S[1:] == 녕하세요
  4. S[:] == 안녕하세요
  5. S[1:100] == 녕하세요 *인덱스가 커도 문자열의 최대 길이만큼만 표현된다.
  6. S[-1] == 요
  7. S[-4] == 녕
  8. S[:-3] == 안녕 *뒤에서 3개 앞글자 까지(‘하’ 전까지)
  9. S[::1] == 안녕하세요 *S와 동일(기본값 == 1)
  10. S[::-1] == 요세하녕안 *뒤집는다.
  11. S[::2] == 안하요 *2칸씩