[파이썬 기초] 자료형(문자열)과 기본 연산(2)

안녕하세요!😚 저번 포스팅에 이어 자료형 중 문자 타입에 대해서 설명하겠습니다. 지난 포스팅에서는 문자열 생성 방법과 특수문자 표현,문자열 연산 및 포맷팅에 대해 다뤘습니다. 이번 포스팅에서는 문자열의 인덱싱 및 슬라이싱과 문자열 관련 함수들에 대하여 소개하겠습니다.😗

파이썬 IDLE 또는 개발툴(IDE)을 실행해주세요 :)
(참고로, 저는 아나콘다의 주피터 노트북으로 실습을 하였습니다!)

5. 문자열 인덱싱

인덱싱이란 말 그대로 무언가를 가리키는 것을 의미합니다. 문자열 인덱싱은 문자의 위치(index)를 활용하여 각 문자에 접근할 수 있습니다. 이전 포스팅에서도 말했지만, 파이썬은 항상 0부터 시작합니다. 따라서, 문자열의 인덱스도 0부터 시작합니다. 참고로, 공백도 포함됩니다. 공백을 빠뜨리지 않도록 조심하세요!😶

아래의 문자열을 활용해서, 천천히 인덱싱에 대해 이해해봅시다!

a = 'Python '
a
'Python '

a에 담겨진 문자열의 길이는 총 7이지만, 인덱스는 0부터 6까지 있습니다. 왜 길이가 7이고, 인덱스가 6까지 있냐고 물으신다면, 문자열의 마지막에 있는 공백까지 포함하였기 때문입니다.

아래의 코드처럼 한 글자씩 뽑아낼 수도 있습니다.

print(a[0])
print(a[3])
print(a[-2])
'P'
'h'
'n'

0번째에 해당하는 문자는 'P'이고, 인덱스 번호 3에 해당하는 문자는 'h'입니다. 또한, -2 번째 문자는 n이 됩니다.

또한, 음수를 인덱스로 사용할 수 있는데요, 가장 마지막 값부터 차례로 -1, -2, ... ,-7까지 표현할 수 있습니다.

따라서, 인덱싱은 0부터 시작하고 공백을 포함하며, 가장 뒤의 값을 -1로 하여 거꾸로 시작한다는 점을 기억해주시면 되겠습니다.🤩

6. 문자열 슬라이싱

슬라이싱은 문자열의 여러 값을 자르는 것을 의미합니다. 만약에 a = 'You Only Live Once.'라는 문자열이 있을 때, 'You'라는 단어를 출력하고 싶다고 가정해봅시다. 인덱싱에서 배운 것을 활용한다면, a[0]+a[1]+a[2]를 하면 됩니다. 그렇지만 이렇게 하나하나 인덱스를 뽑아 사용하는 것은 너무 비효율적입니다. 따라서, 우리는 슬라이싱을 통해 조금 더 빠르고 편하게 원하는 문자를 잘라서 가져올 수 있습니다. 😚

이때, 우리는 콜론(:)을 사용해서 한 번에 여러 값들을 잘라올 수 있습니다. 이때도 인덱스가 활용되니 앞의 인덱스 부분을 잘 이해했다면, 쉽게 코드를 이해할 수 있을 겁니다! 그럼 이제 슬라이싱 예제를 살펴볼까요?

a = 'You Only Live Once.'
print(a)
print(a[0:3]) # 0번째부터 2번째까지 (3번째 문자 포함X)
print(a[4:7]) # 4번째부터 6번째까지 (7번째 문자 포함X)
'You Only Live Once.'
'You'
'Onl'

a[0:3]은 a의 첫 문자부터 3번째 문자 바로 전까지 출력하라는 것을 의미합니다. 조금 더 이해를 도울 수 있도록, 수식으로 표현하면 0 <= a < 3로 나타낼 수 있습니다. 이때 0을 생략하여 a[:3]으로 표현할 수도 있습니다. 둘이 결과는 똑같습니다. 그렇다면, a[4:7]은 4번째 위치의 문자부터 7번째 문자 바로 전까지 출력하라는 뜻이겠죠? 많은 분들이 위와 같은 실수를 많이 하는데요, 콜론 뒤의 숫자는 슬라이싱 할 문자에 포함되지 않는다는 것을 꼭꼭 기억하셔야 합니다!! 정말 중요하고 실수하는 분들도 엄청 많습니다.😭😭

a[:3]처럼 콜론 앞의 숫자를 생략하면 첫 문자부터 콜론 뒤 인덱스 이전의 문자까지 출력합니다. 그렇다면 만약에 a[10:]처럼 콜론 뒤의 숫자가 생략된다면 무엇을 의미할까요? 끝까지 출력하라는 것을 의미하겠죠?

7. 인덱싱 & 슬라이싱

인덱싱과 슬라이싱은 함께 사용되는 경우도 많고, 프로그래밍에서 정말정말 많이 등장한답니다! 헷갈리지 않도록 꼭 다시 봐주세요!😃

  • 인덱싱을 사용하여 오타 수정
a = 'oramge'
print('수정 전 : ' + a[3])
a[3] = 'n'
print('수정 후 : ' + a[3])
'수정 전 : m'
'수정 후 : n'
  • 슬라이싱을 사용하여 오타 수정
a = 'oramge'
print('수정 전 : ' + a)
a = a[:3]+'n'+a[4:]
print('수정 후 : ' + a)
'수정 전 : oramge'
'수정 후 : orange'

8. 문자열 관련 함수

문자열과 관련된 함수들이 여러 개 있는데요, 이번에는 그 내장 함수들에 대해 다뤄볼게요!

  • count()
    count() 함수는 문자열 안에 속하는 특정 문자의 개수를 반환하는 함수입니다. 다음과 같이 사용할 수 있습니다.
a = 'apple'
a.count('p')
2
  • find()
    find()는 괄호 안에 들어간 문자가 문자열에서 처음 등장한 위치(index)를 출력합니다. 만약에 찾고 싶은 문자가 문자열 내에 존재하지 않는다면, -1을 출력합니다. 인덱스 번호를 출력하기 때문에 0부터 시작한다는 것을 기억해야겠죠?🙂
a = 'apple'
print(a.find('p'))
print(a.find('z'))
1
-1
  • index()
    index() 함수는 find() 함수와 거의 비슷합니다! 괄호 안에 들어간 문자가 문자열에서 처음 등장한 위치를 출력해줍니다. 똑같죠? 그러나 다른 점은 문자열 내에 존재하지 않는 문자를 찾는다면, error가 발생한다는 점입니다. find와 index의 차이 잘 기억해주세요!😋
a = 'apple'
print(a.index('z'))
ValueError: substring not found
  • join()
    문자열 내의 각각의 문자 사이마다 원하는 값을 삽입해주는 함수입니다. 예시를 보면 이해가 쏙 갈 겁니다!
'-'.join('apple')
'a-p-p-l-e'
  • upper() & lower()
    upper() 함수는 소문자인 문자열을 대문자로 변환해주는 함수이고, 반대로 lower()은 대문자인 문자를 모두 소문자로 바꿔주는 함수입니다.
a = 'Apple'
print(a.upper())
print(a.lower())
'APPLE'
'apple'
  • rstrip() & lstrip() & strip()
    strip() 함수는 문자열의 양쪽에 있는 공백을 제거해주는 함수입니다. 따라서, rstrip()은 오른쪽(right)의 공백을 제거하고, lstrip()은 왼쪽(left)의 공백을 제거합니다. 예시를 보면 3가지 함수의 차이를 확실하게 이해할 수 있을겁니다!
word = '   rommie   '
print(word.rstrip())
print(word.lstrip())
print(word.strip())
'   rommie'
'rommie   '
'rommie'

문자열(2) 끝!

이렇게 문자열에 대한 포스팅이 끝났습니다!! 이번 문자열 포스팅에서는 인덱싱과 슬라이싱, 그리고 문자열과 관련된 여러 함수들에 대해 이야기를 해보았습니다. 파이썬에서는 항상 0부터 수를 센다는 거 꼭 기억해주세요!😉

앞으로 자료형은 리스트, 딕셔너리, 튜플, 집합이 남아있는데요, 이 4가지 자료형은 다음 포스팅 때 설명해드릴게요!! 그럼, 다음 포스팅에서 만나요 :) 🤍

좋은 웹페이지 즐겨찾기