본문 바로가기
파이썬/주식 자동매매

Python 키움API 자동매매프로그램 개발-7.Python 기초편 문자열 사용

by 행복론자 2021. 1. 22.

시리즈 이전글입니다.

2021/01/21 - [파이썬/주식 자동매매] - Python 키움API 주식자동매매프로그램 개발 - 6.Python 기초편 자료형(1)

 

 

Python에서 제공하는 자료형 중 문자열에 대해서 더 알아보도록 하겠습니다. 

우선 문자열을 어떻게 만들까요?

문자, 숫자를 ‘(작은 따옴표) 혹은 “(큰 따옴표)를 묶으면 문자열이 됩니다.

예를 들어 보겠습니다. 

var1 = 1

var2 = '1'

var3 = 10

var4 = "10.0"

 

 

다음처럼 var1과 var2의 차이는 작은 따옴표가 있고 없고의 차이지만 

그걸로 인해서 var1은 숫자형, var2는 문자열이 됩니다.

var3, var4도 마찬가지입니다. var4는 큰 따옴표를 사용해 문자열이지만 var3는 숫자 10입니다. 

이렇게 따옴표를 이용해 문자열을 만들 때 주의해야할 점은 따옴표를 얼었다면 닫아야 한다는 것입니다.

var2 = '1

 

이렇게 따옴표를 사용해 문자열의 시작을 했지만  끝을 지정하지 않으면 컴퓨터는 어디까지가 문자열인지 모르기 때문에 에러를 발생시킵니다.

또 열었을 때 사용한 따옴표를 그대로 사용해야 합니다. 

무슨 말이냐면 처음에 작은 따옴표를 썼으면 큰 따옴표를 이용해서 문자열을 끝내면 안됩니다. 

(큰 따옴표를 썼다면 작은 따옴표로 끝내면 안됩니다.)

var2 = '1"

 

충분히 이런 실수를 할 수 있지만 크게 걱정하실 필요는 없습니다.

문법이 잘못된 경우에는 Pycharm에서 문제의 부분을 빨간색 밑줄로 표시해줍니다.

 

 

그렇다면 작은 따옴표와 큰 따옴표를 같이 사용할 수는 없는걸까요? 

그렇지는 않습니다. 시작과 끝을 동일 타입의 따옴표로 맞췄다면 그 안에서 다른 따옴표를 사용할 수 있습니다.

var2 = "I don't"

 

 

또한 여러줄의 문자열을 만들고 싶다면 따옴표를 세 번 반복하여 문자열을 선언하면 됩니다.

txt1 = """10.0
1
100
그리고 안녕하세요
화이팅하시죠
"""

txt2 = '''
작은 따옴표도 가능!
'''

 

 

다음은 문자열끼리의 (+) 연산입니다.

연산이라고 하면 숫자들끼리만 가능한 것 아닌가? 하실 수 있지만 문자열에서의 (+)연산은 문자를 합치는 것을 의미합니다.

위의 예시 코드에서 숫자 1이 아니라 문자 ‘1’로 바꿔서 (+)연산을 해보겠습니다.

var3 = "안녕"+'1'

# var3 = "안녕" + 1 

 

 

결과는 ‘안녕1’입니다.

이렇게 문자형끼리 (+)를 사용하면 두 문자가 합쳐지는 것을 알 수 있습니다.

조금 더 응용해보겠습니다. 

var3 = "안녕"+ '1' + "안녕 "+'1'

 

(+)연산을 이용해 여러개의 문자들을 합칠 수도 있습니다. 여기서 눈여겨 보실 것은 “안녕 “입니다. 

이 문자를 자세히 보면 마지막 따옴표가 끝나기 전에 공백이 들어가 있기 때문에  

공백이 없는 “안녕”과는 엄연히 다른 문자입니다.

이제 마지막으로 문자열에 대해 두 가지만 더 살펴볼 것은

슬라이싱(Slicing)과 포맷팅(Formatting)입니다

먼저 슬라이싱은 말 그대로 자른다는 의미입니다.

var = "1234567890"

 

 

여기서 var라는 문자를 슬라이싱 해보겠습니다. 슬라이싱할 때 사용하는 문법은 아래와 같습니다. 

문자열[시작하는 곳 : 끝나는 곳]

 

 

var를 2번째 문자부터 9번째 문자까지 슬라이싱 해보겠습니다. 

var[1:9]

# 출력 결과  > 23456789

 

 

자세히 보면 뭔가 이상하다는 생각이 듭니다.

2번째부터 자른다고 하면 다음과 같이 하는게 아닐까요?

var[2:9]

 

그렇게 생각하실 수도 있지만 또 결과를 살펴보면 출력결과는 2부터 잘 나오는 것으로 보아 정상적으로 실행됐음을 알 수 있습니다. 

 

그럼 var[1:9]이 코드가 두번째 문자부터 정상적으로 슬라이싱할 수 있었던 이유는 

Python은 인덱싱(번호매기기)가 0부터 시작하기 때문입니다. 

무슨 말이냐면 다음 문자를 보면 1이 첫번째고 2가 두번째라고 생각하시기 쉽지만

var = "1234567890"

 

Python은 1을 0번째 문자, 2를 첫번째 문자로 인식합니다. 

따라서 우리 눈에 2번째 문자인 2는 컴퓨터 기준으로는 첫번째이므로 2부터 자르고자 한다면 컴퓨터가 알아들을 수 있도록 ‘첫번째부터’라고 알려줘야 합니다. 

이렇게 컴퓨터와 우리가 생각하는 순서가 차이가 있다고 생각하시길 바랍니다. 

우리 눈에는 순서를 첫번째부터 시작하지만 컴퓨터는 순서가 0번째부터 시작

 

 

그럼 계속해서 살펴보면 슬라이싱에는 시작 번호와 끝 번호가 반드시 필요한 것은 아닙니다.

예를 들어 끝 번호를 전달하지 않으면 마지막까지를 의미합니다. 

var[1:]

# 출력 결과 > 234567890 



그러면 슬라이싱의 시작번호도 전달하지 않으면 어떻게 될까요?

var[:]

# 1234567890

 

 

그냥 var 전체를 출력한 것과 var[:] 의 결과가 동일합니다. 슬라이싱은 하려고 했지만 시작과 끝을 전달하지 않았다면 아무 것도 하지 않은 원래 var와 동일하다는 것을 알 수 있습니다.

슬라이싱에 대해서도 더 살펴볼 부분들이 있지만 본 도서에서는 이정도면 충분하니 

다음으로 포맷팅(Formatting)에 대해서 알아보겠습니다.

포맷팅이란 간단히 말해 문자를 출력하는 포맷을 만들어 놓고 변형하기 쉽도록 하는 

것입니다.

그러면 왜 이런 포맷이 필요할까요?

예를 들어 현재 수익률을 출력하는 메시지가 필요하다고 가정해보겠습니다.

message = "수익률 : 10%"

 

 

하지만 여기서 10에 해당하는 부분은 수익률이 움직임에 따라 계속 변할 수 있는 반면  “수익률 : %” 이라는 문자는 굳이 계속 변경할 필요는 없을 것입니다. 이렇게 고정된 다른 문자 속에 가변문자를 넣기 위해서는 다음과 같이 사용합니다. 

문자열.format(가변문자)

 

그리고 가변문자가 들어갈 자리를 {}로 표시합니다. 

이를 적용하면 다음과 같이 됩니다. 

message = "수익률 : {}%".format("10")

# 수익률 : 10%

 

 

여기서 가변문자가 두개라면 각각의 문자가 들어가야할 자리에 {}을 추가하고 format에 두 개를 전달합니다. (전달하는 “10”과 “5” 사이에는 콤마(,)를 사용합니다.)

message = "수익률 : {}%, 직전 수익률: {}%".format("10", "5")

# 수익률 : 10%, 직전 수익률: 5%

 

 

위의 코드는 format()에 “10”, “5”를 직접 입력했지만 다음처럼 변수를 사용할 수도 있습니다.

return_rate_ago = "5"
return_rate = "10"

message = "수익률 : {}%, 직전 수익률: {}%".format(return_rate, return_rate_ago)

 

 

여기서 format이라는 함수는 문자열에서만 사용할 수 있으며 이 문자열 안에 ‘{}’을 넣고 그 자리를 다른 문자로 바꿔 끼울 수 있게 해준다고 생각하시기 바랍니다.

반대로 {}을 제대로 넣지 않거나 사용한 {}의 개수와 format에 전달하는 문자의 개수가 맞지 않으면 에러가 발생합니다.  아래는 무자열 가변자리 2개를 만들기 위해 {}를 두 번 사용했지만 format에 전달하는 변수는 한개라 에러가 발생합니다. 

message = "수익률 : {}%, 직전 수익률: {}%".format(return_rate)

# error! 

 

 


같이 보시면 좋을 글

2021/02/10 - [파이썬/주식 자동매매] - 주식매매프로그램 개발 노하우, 소스를 담은 전자책이 발간되었습니다.

 

주식매매프로그램 개발 노하우, 소스를 담은 전자책이 발간되었습니다.

주식매매프로그램 개발 노하우에 관한 제 전자책이 발간되었습니다. https://kmong.com/gig/292764 주식매매프로그램, 쉽게 따라 만드는 노하우와 소스를 드립니다. | 36000원부터 시작 가능한 총 평 0개

jsp-dev.tistory.com

 

2021/01/22 - [파이썬/주식 자동매매] - Python 키움API 자동매매프로그램 개발-8.Python 기초편 튜플, 리스트 사용 패킹 언패킹

 

반응형
이 포스팅은 쿠팡파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

댓글