[Python] 문자열 자료형(2) - 문자열의 인덱싱과 슬라이싱
문자열 인덱싱과 슬라이싱
- 인덱싱(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]) # ra[-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]) # Lifea[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 tooa[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
댓글남기기