반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

 

오늘은 지난 시간의 숫자형 자료형에 이어 문자열 자료형에 대해서 공부해보겠습니다.

 

[코딩유치원 기초문법 강의]

 

2021.03.09 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 1편_프로그래밍과 코딩의 정의, 그리고 자료형

2021.03.11 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 2편_문자열 자료형

2021.03.11 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 3편_변수란 무엇일까?

2021.03.12 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 4편_리스트 자료형

2021.03.12 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 5편_튜플, 딕셔너리 자료형

2021.03.13 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 6편_집합, 불 자료형

2021.03.14 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 7편_제어문(if문)

2021.03.15 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 8편_제어문(while문)

2021.03.16 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 9편_제어문(for문)

2021.03.17 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 10편_함수, 모듈, 패키지 개념 총정리

2021.03.18 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 11편_함수 사용법

2021.03.19 - [파이썬 기초/기초 문법] - [코딩유치원] 파이썬 기초 문법 12편_모듈 사용법

 

 

코딩유치원에서는 기초 문법을 하나하나 자세히 다루기보다는 개념에 대해 간략히 설명하고 넘어갈 예정입니다.

마치 영어를 시작할 때, 문법만 주구장창 공부하다가 영어에 흥미를 잃어버리는 것과 같이 코딩도 마찬가지라고 생각하기 때문입니다.

문법을 자세히 다루는 곳은 구글에서 조금만 검색해도 많이 나올뿐만 아니라, 나중에 필요할 때마다 찾아보는 것이 더 효율적입니다!


 

문자열 자료형

 

1. 문자열 자료형은 어떻게 만들 수 있을까

문자열(String)이란 한마디로 '글자들'입니다. 여러분들이 " "(큰따옴표)나 ' '(작은 따옴표) 사이에 무엇인가 작성하면 그것이 문자열이 됩니다. 그 안에 숫자를 넣더라도 문자열로 인식된다는 것 기억하세요.

"Hello Python"
"이것도 문자열"
"234567"
"이 안에서는 띄어쓰기도 문자열"

어째서 " "와 ' '를 둘 다 사용하나 궁금하실 수 있는데요. 그 이유는 아래와 같이 글자 안에 '와 "를 사용할 때가 있기 때문입니다.

"Roy's macbook is nice"

 

2. 여러줄 문자열

여러줄의 문장도 문자열로 입력하실 수 있는데요. 이때는 """ """(큰따옴표 3개)나 ''' '''(작은 따옴표 3개)의 사이에 작성하시면 됩니다.

"""
이 사이에 엔터를 치면서
막 이렇게 치시면
나중에 print() 함수로 출력했을 때
여러줄로 출력됩니다.
"""

 

3. 문자열 인덱싱

문자열 인덱싱(Indexing)을 설명드리기 전에, 인덱스(Index)가 무엇인지 알고 넘어갈 필요가 있습니다.

Index란 한국어로 색인 또는 목록을 뜻합니다. 색인이란 글의 본문 중에서 중요한 것을 뽑아 한 곳에 모아두고 찾아보기 쉽게 페이지를 기재해 놓은 것이죠. 즉, 무엇인가를 인덱싱한다는 뜻은 '그것의 정확한 위치를 파악하여 가리킨다'라는 뜻으로 해석할 수 있습니다.

 

우리는 문자열 인덱싱을 통해 문자열의 문자 하나하나에 차례대로 번호를 붙여서, 번호로 문자를 딱 집어낼 수 있습니다.

문자 하나뿐만 아니라 여러개도 가능하죠. (이 부분은 바로 아래에서 슬라이싱이란 개념에서 설명드릴게요)

a = 'hello python'
     012345678901
     
a[0] = 'h'
a[11] = 'n'
a[-1] = 'n'    # -1은 뒤에서 부터 인덱싱할 때 사용. 참고로 -0은 0과 같으므로 h를 가리킴

여기서 주의할 것은 hello python은 문자열로 12개입니다. 파이썬은 띄어쓰기도 문자열로 인식하니까요.

그리고 파이썬은 문자열의 가장 처음 인덱스를 0부터 시작합니다. 이 점은 파이썬의 특징이라기 보다는 프로그래밍 언어의 특징이라고 보시면 됩니다. 이 부분은 코딩하실 때, 항상 헷갈리실 부분이니깐 꼭 숙지해 두시면 좋을 것 같아요.

 

4. 문자열 슬라이싱

문자열 슬라이싱(Slicing)은 영어의 뜻 그대로 문자열을 잘라서 가져오는 느낌입니다. 설명보다는 코드로 이해하시는게 빠를 것 같아요.

a = 'hello python'
     012345678901
     
a[0:5] = 'hello'       # 0:5는 0 이상 5미만을 뜻함 (5 미만이므로 띄어쓰기 부분은 포함 안함에 주의)
a[5:12] = ' python'    # 5 이상이므로 앞에 띄어쓰기를 포함하고, n을 포함시키위해 12를 넣어줌
a[6:] = 'python'       # 6번 인덱스 이상의 문자열 모두 출력
a[:] = 'hello python'  # :을 기준으로 왼쪽오른쪽에 숫자가 없으면 모두 다를 가리킴

len(a) = 12    #len()함수는 문자열의 길이를 구할 때 사용하는 함수

참고로, 문자열 a는 a[11]까지가 끝이지만 슬라이싱 할때만 12,13,14를 넣어줘도 오류가 나지 않습니다. 직접 코딩을 해보시면 a[12]를 인덱싱하면 오류가 나는 것을 확인해 보실 수 있습니다. 

 

5. 문자열 포매팅

문자열 포매팅은 한 마디로 '문자열 안의 글자나 숫자가 바뀌는 문자열'을 만드는 기법입니다.

 

예를 들어보겠습니다.

"현재 시간은 오전 7시입니다"

 

이 문자열에서 시간에 따라 오전/오후시간을 바꾸어 주고 싶다면 어떻게 해야할까요?

자세히는 잘 몰라도 현재의 시간을 어디선가 계속 받아와서 문자열 안의 오전과 7시를 바꾸어 주어야 할 것입니다.

문자열 포매팅 기법은 3 가지 형태가 있는데요. 형태는 다르지만 그 개념은 비슷하니 그 차이점을 비교하면서 차근차근 따라와주세요.

 

조금 어려울 수 있으니 한 번에 다 이해하시려고 하기보다는 이런게 있구나라고 쭉 읽어보시고, 필요한 일이 생기면 그 때 이 글을 다시 읽으시는 걸 추천드려요.

 

 

1) % 포매팅

바뀌길 원하는 곳에 %s(문자열), %c(문자 1개), %d(정수), %f(실수) 를 넣어주고, 문자열이 끝난 후에 % + 원하는 숫자나 문자, 문자열을 붙여주는 방식입니다. 말로 표현하자니 잘 이해가 안되실 듯 해서 코드로 작성해보겠습니다.

"현재 시간은 오전 %d시입니다." %7
>>> '현재 시간은 오전 7시입니다.'

"현재 시간은 %s %d시입니다." %('오전', 7)
>>> '현재 시간은 오전 7시입니다.' #문자열을 입력할 시, ''를 까먹으면 에러가 남

"현재 시간은 %s %s시입니다." %('오전', 7)
>>> '현재 시간은 오전 7시입니다.' # 앞에서 %s를 쓰고 숫자를 넣으면 ''를 넣지 않고도 자동으로 문자로 인식함

하나만 포매팅 할 때는 괄호가 필요없고, 두 개 이상 포매팅 할 때는 괄호를 포함하여 순서대로 원하는 숫자나 문자를 넣어주면 됩니다.

%s를 이용해 포매팅을 하면, 정수, 실수가 자동으로 문자열로 인식되어 입력된다는 것도 알아두시면 좋을 것 같아요.

 

 

2) format 함수 포매팅

format 함수를 사용하면 앞에서처럼 문자열, 정수, 실수를 구분할 필요가 없습니다. 사실상 좀 더 발전된 방식이라고 할 수 있습니다.

위에서 보신 예제를 format 함수를 이용해서 다시 작성해보겠습니다. 비교하면서 보시면 더 잘 이해가 될 거에요.

"현재 시간은 오전 {0}시입니다." .format(7)
>>> '현재 시간은 오전 7시입니다.'

"현재 시간은 {0} {1}시입니다." .format('오전', 7)
>>> '현재 시간은 오전 7시입니다.'

{}는 0부터 시작하는 것에 주의해주세요.

 

 

3) f 문자열 포매팅

문자열 포매팅 기능은 파이썬 3.6버전 이후로 나온 방식으로, 문자열 앞에 f를 붙이는게 특징입니다. 개인적으로 가장 직관적이고 간편한 방식이라고 생각합니다.

 

이 방식은 변수를 설정해주고, 변수를 문자열 안에 {변수} 형태로 넣어주는 방식으로만 사용가능합니다. 다음 시간에 변수에 대해서 자세히 설명드릴 예정이니, 오늘은 자세한 설명없이 예제 코드로만 보고 넘어가도록 하겠습니다.

time = 7
f"현재 시간은 오전 {time}시입니다."
>>> '현재 시간은 오전 7시입니다.'

time = 7
ampm = '오전'
f"현재 시간은 {ampm} {time}시입니다."
>>> '현재 시간은 오전 7시입니다.'

 

사실 다른 포매팅에서는 설명하지 않았지만 변수를 이용할 수 있는 것은 f 문자열 포매팅만 가능한 것이 아닙니다.

변수를 사용한 두 포매팅을 비교하면 아래와 같습니다.

time = 7
"현재 시간은 오전 {0}시입니다." .format(time)
>>> '현재 시간은 오전 7시입니다.'

time = 7
f"현재 시간은 오전 {time}시입니다."
>>> '현재 시간은 오전 7시입니다.'

오늘은 파이썬의 여러가지 자료형 중에서, 문자열 자료형에 대해 다루어보았습니다.

여기까지 따라 오시느라 고생 많으셨고, 다음 시간에는 변수에 대해 알아보기로 하겠습니다.

 

오늘도 코딩유치원을 찾아 주신 여러분~ 감사합니다!

반응형

+ Recent posts