본문 바로가기

Data analysis story

[Python]-파이썬 자료형1. 문자열의 모든 것(문자열 만들기, 이스케이프 코드, 문자열 연산, 문자열 인덱싱, 슬라이싱, 문자열 포매팅)

안녕하세요! 여러분!!

 

저번 시간까지 파이썬의 함수!에 대해 낱낱이 파헤쳐보았는데요!^^

 

이번 시간부터는 "파이썬의 자료형"에 대해서 살펴보도록 할꺼에요!

 

자료형은 무엇을 의미하는 것일까요?

자료형이란 Data Type이라고도 하며 변수나 상수가 저장할 수 있는 자료의 형식을 의미합니다.

 

, 프로그래밍을 할 때 쓰이는 숫자, 문자열 등 자료 형태로 사용되는 모든 것을 말하죠!

 

따라서 프로그램의 기본이자 핵심 단위!라고 할 수 있죠!


우리는 이제껏 숫자, 문자열 형태의 자료형만 봐왔었는데요.

파이썬의 자료형에는 더 많은 것들이 존재합니다!

 

"숫자형, 문자열 자료형, 리스트 자료형, 튜플 자료형, 딕셔너리 자료형, 집합 자료형!"

 

에 대해서 이번 시간부터 차근차근 배워보도록 합시다!

 

숫자형은 이미 포스팅한 것에 알아야 할 내용들이 다 들어있어서 따로 포스팅하지는 않을껀데요!

 

문자열은 우리가 이때까지 이미 사용해왔지만

더 알아야 내용들이 있어 오늘 포스팅에서 다루도록 하겠습니다!

 

어떤 프로그래밍 언어든 그 언어의 자료형을 알고 이해할 수 있다면 이미 그 언어의 절반을 터득한 것이나 다름없다!’ 라는 말이 있습니다.

 

열심히 배워보도록 합시다!!

 

문자열이란 아마 어떤 것인지 다들 아시겠지만!

String이라고도 하며 문자, 단어 등으로 구성된 ‘문자들의 집합’을 의미합니다.

 

컴퓨터에게는 숫자가 중요하지만 인간은 주로 문자열(string)

사용하여 정보를 표현하고 저장하므로 문자열의 처리도 무척 중요합니다!

 

예를 들면

이런 예들이 문자열의 예가 될 수 있겠죠!

 

그런데 Python a는 문자이니 문자열인지 명확히 알 수 있는데

5는 왜 문자열이라고 하는 것일까요?

숫자 아닌가요?

 

왜냐하면 문자열은 큰따옴표("...")나 작은따옴표('...') 안에 들어 있는 텍스트 데이터이기 때문입니다.

 

그냥 5라고 되어 있으면 이 자료형은 숫자 자료형이겠지만,

큰 따옴표 안에 있기 때문에 문자열 데이터가 되는 것입니다!

 

따라서 문자열을 만들기 위해서는 꼭 따옴표를 사용해야 합니다.

만약 따옴표를 쓰지 않는다면

이렇게 에러가 발생하니 꼭 유의하세요!

 

꼭 큰따옴표를 써야하는건 아니에요!


파이썬에서 문자열을 만드는 방법에는 4가지 방법이 있습니다!

첫번째는 위에서 든 예와 같이 큰따옴표로 문자열 전체를 둘러싸는 것이고요,

 

두번째는 작은 따옴표로 문자열 전체를 둘러싸는 것입니다.

위의 예를

이렇게 작성해도 문자열이 출력되고

이렇게 작성해도 문자열이 출력된다는 것이죠!

 

또한 세번째로 큰따옴표 3개를 연속으로 사용하여 문자열 전체를 둘러싸도 됩니다!

이렇게 말이죠!

당연히 네번째 방법은 작은따옴표 3개를 연속으로 사용하는 방법이겠죠?

그런데 이런 생각 안드시나요?

왜 굳이 문자열을 만드는 방법에

큰 따옴표와 작은 따옴표를 모두 허용하였을까요?

 

어떤 이유가 존재하지는 않을까요?

바로 이유가 존재합니다! 다음과 같은 상황을 위해서 두 가지를 허용하는 것이죠!

위의 예처럼

문자열 안에 작은 따옴표를 포함시키고 싶을 때가 있잖아요!

 

이럴 때는 문자열 전체를 큰 따옴표로 감싸고

안에 작은 따옴표를 쓰고 싶은 부분에 쓰면

우리가 원하는 문자열이 잘 출력되는 것을 알 수 있습니다!!

 

문자열 전체도 작은 따옴표로 감싸면 어떻게 될까요?

이렇게 되면

철수가가 문자열로 인식이 되어 구문 오류가 발생합니다!

 

따라서 꼭 큰 따옴표와 작은 따옴표 모두가 필요한 것이지요!

 

반대로 큰 따옴표가 포함된 문자열을 출력하고 싶다면

전체 문자열은 작은 따옴표로 감싸면 되겠죠!

이렇게 한 줄의 문자열을 만드는 방법을 여러 가지 살펴보았는데

 

그러면 여러 줄인 문자열을 만들고 싶을 때는 어떻게 해야할까요?

 

예를 들면

I need a pen

Can you lend me your pen?

 

이런 문장들 말이죠!

두 가지 방법이 있는데요!
첫번째로는 ‘\n’을 사용하면 됩니다.

바로 이렇게 말이죠!

하지만 읽기에 불편하고 줄이 길어지는 불편함이 있죠!

 

따라서 두번째 방법으로는 아까 처음에 문자열을 만드는 방법 때 3,4번째로 소개했던

연속된 작은따옴표 3개(‘’’)와 큰따옴표 3개(“””)를 이용하는 방법이 있습니다.

이 방법은 여러 줄을 출력할 때 유용하게 사용됩니다!

 

이렇게 변수에 저장한 뒤 print함수로 출력해보면!

역시나 여러 줄이 잘 출력됩니다!

 

이스케이프 코드

+) 첫번째 방법에서 백슬래시 문자와 소문자 n을 조합해서 줄바꿈 기능을 수행했었는데요!

‘\n’처럼 프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 문자 조합들을 이스케이프 코드라고 합니다.

 

주로 출력물을 보기 좋게 정렬하는 용도로 이용되는데요!

 

‘\n’말고도 또 다른 몇 가지 이스케이프 코드를 보도록 할게요!

따라서 앞서

이 예시에서도

를 그대로 표현하고 싶다면

바깥은 큰 따옴표로 안의 안녕은 작은 따옴표로 감싸도 되지만

라고 써도 된답니다!

문자열의 연산

숫자만 연산을 하는 것은 아닌데요! 파이썬에서는 문자열도 연산이 가능합니다!

 

문자열은 더하거나 곱할 수 있습니다.

이는 다른 언어에서는 쉽게 찾아볼 수 없는 재미있는 기능이라고 하네요!!

 

먼저 문자열을 더하는 방법부터 보겠습니다.

더하기 연산인 +을 사용했더니

문자열이 딱 붙었죠!

 

need a 사이에 띄어쓰기를 주고 싶다면 tail 변수에 “a pen”을 저장할 때 “ a pen”이렇게 a앞에 공백을 주고 저장하면 된답니다!

 

이렇게 +연산은 문자와 문자를 공백없이 딱 합쳐줍니다!

혹은 이렇게

해도 문자열이 합쳐집니다!

주의해야 할 점은

문자 자료형은 문자 자료형끼리만 합쳐야 한다는 것이죠!

 

이제는 문자열을 곱하는 방법을 보겠습니다!

문자열을 곱할 때도 역시 *연산을 써주면 되는데요!

문자열의 인덱싱과 슬라이싱

 

문자열(string)은 문자들의 순서 있는 집합(sequence of characters)이라고 볼 수 있는데요!

그림을 통해 명확하게 이해해봅시다!

따라서 문자열 인덱싱과 슬라이싱이 가능합니다.

 

인덱싱부터 알아보도록 하죠!
인덱싱(indexing)이란 무엇인가를 가리킨다는 의미입니다.

그런데 가리키려면 주소가 있어야하지 않습니까?

 

문자열이 문자들의 순서 있는 집합이므로 문자 하나하나가 자신만의 주소를 가집니다,

 

파이썬에서 주소를 가지는 방식은

문자열 “Python”을 예로 들어보면

이렇습니다!

처음에 위치한 문자는 0, 두번째에 위치한 문자는 1, 이런식으로 문자마다 자신만의 주소를 가집니다.

이때 [ ]기호 안에 주소를 입력해주면 그 주소에 위치한 문자를 알려줍니다.

예를 들어볼게요!

이 때 앞에서부터 읽지 않고 뒤에서 붙어 읽으려면 어떤 주소를 가질까요?

a[-1]이 뒤에서부터 셀 때 첫 번째가 되는 문자를 알려줍니다.

이렇게 말이죠!!

 

그렇다면 슬라이싱은 무엇일까요?

슬라이싱(Slicing)은 무엇인가를 ‘잘라낸다’는 의미잖아요!

 

앞서 인덱싱처럼 하나의 문자만 뽑는 것이 아니라 ‘thon’처럼 일부 집합을 뽑아내고 싶을 때 사용합니다.

만약 ‘thon’만 뽑아내고 싶다면

a[2:5] 이렇게 하면 되지 않을까요?

하지만

n이 포함되지 않아 tho만 뽑힌 것을 알 수 있죠!

슬라이싱을 할 때는 뽑고 싶은 문자열 위치에 1을 더해서 써주어야 합니다.

이렇게요!

혹은

이렇게 끝 번호를 생략하면 시작 번호부터 그 문자열의 끝까지 뽑아낸답니다!

 

슬라이싱을 할 때도 마이너스 기호를 사용할 수 있어요!

예를 들면 이렇게 말이죠!

그리고 한 가지 주의할 점은

이런 문자열의 요소 값은 바꿀 수 있는 값이 아닙니다!!
꼭 유의하세요!!

문자열 포매팅

문자열에서 또 하나 알아야할 것으로는 문자열 포매팅(Formatting)이 있습니다.

 

어떤 경우를 위해서 이것이 필요한 것인지

이때까지 다뤘던 예제 중 하나의 예제를 가져와서 설명드리겠습니다.

while문 포스팅에서 다루었던 예제인데요!

마지막 문장을 봅시다.

print(“자리수의 합은”,sum,”입니다.”)

 

sum이라는 숫자 데이터를 가진 변수 때문에 문자열을 쪼개서 자리수의 합은”, sum, “입니다.” 이렇게 썼었죠!

 

문장이 만약 길어지고 문자, 숫자 등등 자료형이 더 다양해진다면

코드를 입력하는데 너무 오랜 시간이 걸리지 않을까요?

 

이런 경우를 위해 문자열 포매팅이란 것이 있는 겁니다!!

 

문자열 포매팅이란 쉽게 말해 문자열 내에 어떤 값을 삽입하는 방법인데요!

 

어떤 값을 삽입할지는 자료형에 따라 달라지겠죠!

 

먼저 숫자를 바로 대입하는 경우를 살펴보죠!

문자열 내에 3이라는 정수를 삽입할 수 있게 되었네요!

문자열 안에서 숫자를 넣고 싶은 자리에 %d라는 문자를 넣어주고,

삽입할 숫자인 3은 가장 뒤에 있는 %라는 문자 다음에 써주면 됩니다.

여기서 %d는 문자열 포맷 코드라고 부릅니다!

 

숫자 값을 변수로 대입

혹은 숫자 값을 변수로 대입해야 할 경우도 있습니다.

앞의 while문 예제 같은 경우이죠!

이때도 %d를 사용하고 %라는 문자 뒤에 변수를 써주면 됩니다.

바로 이렇게 말이죠!

 

문자열 바로 대입

문자열에 꼭 숫자만 삽입하라는 법은 없습니다.

문자열을 삽입해야 할 때도 있는데요.

문자열일 때는 %s를 사용해야 합니다.

 

2개 이상의 값 넣기

그렇다면 문자열 안에 1개가 아닌 여러 개의 값을 넣고 싶다면 어떻게 해야할까요?

이렇게 2개 이상의 값을 넣기 위해서는 %다음 괄호 안에 콤마로 구분하여 각각의 변수를 넣어주면 됩니다!!

 

그런데 잠깐!

문자열 포매팅을 위해 %문자를 사용하기 때문에 진짜 %문자를 문자열 속에 삽입하고 싶을 때는 어떻게 해야 하나요?

“Error is 98%”라는 문장을 출력하고 싶을 때

앞서 우리가 배운대로 하면

이렇게 에러가 납니다.

이럴 때는 %를 두 개 써주면 됩니다.

이렇게요!!

 

이렇게 해서 문자열 자료형에 대해

알아야할 많은 부분들을

오늘 다루어보았습니다!!

다음 포스팅에서는 리스트 자료형에 대해 배워봅시다!!