8. 문자열 알아보기

2020. 5. 11. 00:45Investment Story/금융공학 - 파이썬

반응형

안녕하세요 자꿈두입니다. 

오늘 포스팅은 문자열이라는 자료형에 대해서 알아볼텐데요. 

문자열이란 말 그대로 데이터가 문자들의 집합으로 이루어진 것입니다. 

 

예를 들어

"반갑습니다, 자꿈두입니다."

는 문자열이죠. 

 

그러면

"123456789"

는 문자열일까요? 

네 문자열입니다. 

 

파이썬에서 문자열을 표현하는 방법으로는 

문장의 양 끝에 작은따옴표('), 큰따옴표("), 작은따옴표 3개('''), 큰따옴표 3개(""") 등을 입력하면 된다. 

주의할 것은 양 끝의 입력한 따옴표는 같은 것이어야 한다. 

즉 작은따옴표로 시작하면 끝도 작은따옴표, 큰 따옴표로 시작하면 끝도 큰 따옴표여야 한다는 것이다.

양 끝의 따옴표 형식이 다르면 에러를 출력하는 예시


이스케이프 코드

그러면, 문자의 따옴표를 넣고 싶으면 어떻게 할까요?

그냥 넣으면 될까요?

문자열 안에 따옴표 넣기 오류 예시

역시 안되죠. 

 

문자열을 여러개 넣고 싶은데 따옴표를 사용해서 그냥 넣을 수 있을까요?

문자열 여러 줄 오류 예시

이 것도 안되네요. 

사실 이건 따옴표 세 개짜리를 사용해서 가능하게 만들 수는 있습니다.

따옴표 세개를 사용한 문자열 여러개 입력

엇 근데, 

저기 \n 이 무엇일까요?

여기서 원화로 표시된 \, 키보드마다 다른데 보통 백슬래시로 표시되죠.

이게 지금부터 알아볼 이스케이프 코드입니다.

 

이스케이프 코드는 문자열 사용중 문법의 오류가 나지 않도록 특수한 조합을 사용해 출력을 바꿀 수 있도록 하는 것인데요. 즉, 이 백슬래시 이후에 나온 문자는 특수 문자임을 파이썬에게 알리는 것입니다.

이스케이프 코드는 다음과 같습니다.

이스케이프 코드 설명
\' 문자열 안 작은따옴표 표현
\" 문자열 안 큰따옴표 표현
\n 줄 바꾸기
\t 문자 사이 tab 간격 내기
\\ 문자열 안 백슬래시 표현

 

이스케이프 코드를 활용한 표현

위의 예시처럼 이스케이프 코드를 활용하여

문자열 내에 따옴표를 넣기, 줄 바꾸기 등 다양하게 활용할 수 있습니다.


문자열의 연산

지난 포스팅에서 연산을 알아보았는데

문자열도 마찬가지로 연산이 가능합니다. 

 

문자열을 더하면 문자열이 합쳐진 결과를 보입니다. 

문자열 합치기

문자열을 숫자와 곱하면 

곱한만큼 문자열이 반복됩니다.

문자열 곱하기

하나 새롭게 알아야 할 개념이 멤버십 연산입니다. 

멤버십 연산자는 두 가지가 있는데요

in 

not in

이 그들입니다.

뜻 그대로 안에 있는지 없는지 연산하는 기능을 갖고 있습니다.

tmp 라는 변수에 '반갑습니다, 자꿈두입니다'라는 문자열이 할당되어 있을 때를 두고 

이 연산자를 활용해보겠습니다.

in 과 not in 의 예시

위의 결과처럼 in과 not in의 결과는 boolean 형으로 나타나죠. 

해당하는 in 연산은 문자열이 안에 있으면 True를 반환하고, 없으면 False를 반환하죠
반대로 not in 연산은 없으면 True를 반환하고, 있으면 False를 반환합니다.


문자열의 길이구하기, 인덱싱, 슬라이싱

len 함수를 이용해 문자열의 길이를 쉽게 구할 수 있는데요. 

방법은 쉽습니다. len() 괄호 안에 길이를 구하고 싶은 문자열을 넣으면 됩니다.

len 함수 이용

문자와 특수문자 그리고 스페이스까지 모두 한 개로 취급합니다.

그래서 총 13의 길이가 나오는 것이죠.

 

파이썬은 문자열 안 문자들의 위치를 번호로 매깁니다. 

이를 양수로 매기기도 하고요, 음수로 매기기도 합니다. 

이를 인덱싱(Indexing)이라고 합니다.

인덱싱 방식은 아래와 같습니다.

인덱싱 방식

양수 인덱스는 문자 처음부터 0에서 시작하고요,

반대로 음수 인덱스는 문자 끝으로부터 -1에서 시작합니다. 

인덱스를 이용해서 해당 위치에 있는 문자를 불러올 수 있겠죠.

인덱스를 이용한 문자 불러오기

5번과 -8번을 불렀을 때 같은 값을 불러온 걸 보실 수 있죠.

마찬가지로 10과 -3을 불러온 것도 같습니다.

 

한 문자씩 불러오는 것으로는 별로 할 수 있는게 없겠죠. 

물론 처음에 배운 문자의 연산을 통해 할 순 있겠지만 조금 번거롭겠죠.

문자열의 연산을 이용한 영역 불러오기

쉽게 일정 영역을 불러올 수 있는데 이걸 우린 슬라이싱(Slicing)이라고합니다.

슬라이스는 아래와 같이 표현 가능한데요.

 

[시작:끝:단위]

*시작 번호부터 끝 전 번호까지 호출한다. 단위는 안 넣으면 기본으로 한 개씩이다.

 

이렇게 보면 어려우니 예시를 들겠습니다.

"자꿈두"라는 문자열을 "반갑습니다, 자꿈두입니다" 로부터 불러오려면

인덱싱 7,8,9를 불러오면 됩니다. 

즉 [7:10]이라고 슬라이싱을 하면 되는데요. 

위에 설명처럼 끝 전 번호까지 호출하니 7,8,9를 호출 하는 것입니다. 

슬라이싱 예시

뒤에 1은 넣으나 마나 같죠.

 

슬라이싱 예제 

tmp1이라는 변수에 아래와 같은 문자열이 할당되어 있을 때 예제를 이용해 슬라이싱을 공부해봅시다.

tmp1에 할당되어 있는 문자열

tmp1[14:] 

이라는 이야기는 14번째부터 끝까지, 1단위로 불러오라는 이야기입니다. 

여기서 우리가 알 수 있는 것은 끝번호를 넣어야 할 곳에 공백이라면 끝까지 불러오란 의미죠.

결과는 아래와 같습니다.

끝 부분이 공백이면 영역 끝까지

반대로 시작위치가 공백이면 어떨까요?

tmp1[:-32] 를 출력하면 -32번째부터 시작까지라는 이야기겠죠. 

tmp1[:-32] 예시

음의 Index를 사용하든 양의 Index를 사용하든 같은 값을 출력합니다.

tmp1[:13]과 tmp1:[-32] 는 같은 값을 출력하죠

tmp1[:13] 예시

자꿈두입니다 Nice to meet you 라는 값을 불러오고 싶으면

아래와 같이 하면 되겠죠

일정부분 불러오기 예시

그러면 [시작:끝:단위] 시작과 끝은 이제 대충 감이 오시는데 단위는 아직 무엇인지 모르시겠죠. 

몇 칸씩 불러올지에 대한 이야기입니다. 기본값은 1이니 하나씩 순서대로 불러오는 것이었죠.

단위의 예

예를 들어 2를 집어 넣으니 한 칸씩 거르고 값을 가져오는 것을 보여주네요. 

이를 이용해 문자열을 거꾸로 출력하는 것도 가능합니다. 

바로 음수를 넣어서죠.

문자열 거꾸로 가져오기

시작과 끝을 공백으로 넣으므로 문자열 전체를 불러오는 것인데, 단위를 -1로 표현함으로 인해

거꾸로 가져왔습니다.

 

이상 오늘 문자열에 대해 알아보았습니다. 

오늘도 읽어주신 모든 분들께 감사드립니다.

반응형