[Python 독학] 파이썬 자료형 - 문자열 자료형 ②

2021. 6. 21. 17:38Python

이번엔 문자열 자료형에서 가장 중요한

인덱싱과 슬라이싱에 대해 정리할 것이다.

잘 보면 규칙성이 있기 때문에 이해하기 어렵지 않다.

 

인덱싱(Indexing)

'가리킨다'는 의미 그대로다.

내가 물어본 자릿수에 위치한 문자를 알려주는 것인데

여기서 주의해야 할 것은 파이썬 역시 자릿수를 counting 할 때

맨 앞이 1이 아닌 0부터 counting 한다는 것이다.

>>> a = "Lifre is too short, You need Python"

여기서 a에 입력된 문자열의 각 문자마다 번호를 매겨 보면 다음과 같아진다.

L i f e   i s   t o o   s h o r t ,   Y o u   n e e d   P h t h o n
0                   1                   2                   3      
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3

따라서 a의 3번째 문자가 궁금하면

>>> a[3]

이라고 입력하면 되고 그 값은

'e'가 나온다.

>>> a = "Lifre is too short, You need Python"
>>> a[3]
'e'

만약 [대괄호] 사이에 음수가 들어간다면??

그건 거꾸로 뒤에서부터 counting 하면 된다.

예를 들면 이런 식으로...

>>> a = "Life is too short, You need Python"
>>> a[0]
'L'
>>> a[-0]
'L'
>>> a[-3]
'h'
>>> a[-1]
'n'

 

 

슬라이싱(Slicing)

'잘라낸다'는 의미에 걸맞게

내가 어디서부터 어디까지 (어떻게) 잘라서

뽑아낼지 시키는 문법이다.

 

a를 위에서 계속 이어지는 문장이라고 하자.

입력 틀은 a[시작번호(이상):끝번호(미만):간격]이다.

하지만 무조건 colon (:,쌍점)을 2번씩 사용할 필요는 없다.

 

구구절절 설명하는 것보다 예시 몇 가지 보는 것이

더 빠르게 감이 잡히므로 바로 예시로~

>>> a = "Life is too short, You need Python"
>>> a[0:4]
'Life'
>>> a[5:7]
'is'
>>> a[12,17]
'short'

a[0,4] : a에서 0번째 문자부터 4번째 미만 문자까지 뽑아내시오.

             ☞ a에서 0번째 문자부터 3번째 문자까지 뽑아내시오.

         ☞ 그래서 'Life'가 나오는 것이다.

 

>>> a[19:]
'You need Python'
>>> a[:17]
'Life is too short'
>>> a[:]
'Life is too short, You need Python'

a[시작번호:끝번호]에서

끝 번호 부분을 생략한다면 시작번호부터 그 문자열의 끝까지,

시작 번호 부분을 생략한다면 문자열의 처음부터 끝번호까지 뽑아낸다.

>>> a[19:-5]
'You need P'

물론 마이너스(-) 기호도 사용할 수 있다.

 

 

 

사실 이다음 순서는 포매팅이지만

포매팅끼리 묶기 위해서 문자열 관련 함수를

정리하며 마무리 지어볼까 한다. 개인적인 생각이지만

어딘지 모르게 엑셀 함수와 많이 닮았다는 느낌을 많이 받았다.

 

문자 개수 세기 count

>>> a = "banana"
>>> a.count('a')
3

위치 알려주기① find 

>>> a = "Python is the best choice"
>>> a.find('e')
12
>>> a.find('k')
-1

문자열 중 처음으로 나온 위치를 반환한다.

만약 찾는 문자나 문자열이 존재 하지 않는다면 -1을 반환한다.

 

위치알려주기② index

>>> a = "Life is too short"
>>> a.index('i')
1
>>> a.index('k')
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 ValueError: substring not found 

find 함수와 동일하지만 찾는 문자가 문자열에

존재하지 않는 경우 -1이 아닌 Error가 뜬다.

 

문자열 삽입 join

>>> ",".join('1234')
'1,2,3,4'

>>> ",".join(['a','b','c','d'])
'a,b,c,d'

소문자 → 대문자 upper

>>> a = "hi"
>>> a.upper()
'HI'

소문자 ← 대문자 lower

>>> a = "HI"
>>> a.lower()
'hi'

양쪽 공백 지우기 strip

>>> a = " hi "
>>> a.strip()
'hi'

문자열 양쪽에 있는 한 칸 이상 연속된 공백을 모두 지운다.

 

왼쪽(오른쪽) 공백 지우기 lstrip(rstrip)

>>> a = " hi "
>>> a.lstrip()
'hi '

>>> a = " hi "
>>> a.rstrip()
' hi'

lstrip의 l은 left의 줄임말,

마찬가지로 rstrip의 r은 right의 줄임말.

 

문자열 바꾸기 replace

>>> a = "Life is too short"
>>> a.replace("Life","Your leg")
'Your leg is too short'

문자열 나누기 split

>>> a = "Life is too short"
>>> a.split()	← 공백을 기준으로 문자열 나눔
['Life', 'is', 'too', 'short']
>>> b = "a:b:c:d"
>>> b.split(':')	← : 기호를 기준으로 문자열 나눔
['a', 'b', 'c', 'd']