👨‍💻 Python String 문법

목표: 파이썬을 이용해서 문자열을 화면에 출력하는 여러가지 방법을 배웁니다.

📌 문자 와 문자열?

우리는 살면서 정말 많은 문자들을 봅니다. 대한민국에서 태어났다면 대개 처음으로 보게 되는 문자가 '가' '나' '다' '라' 와 이겠지요.

 

⚡ 문자란

이렇게 '가나다라'와 같이 언어의 전달 수단의 하나로 사용되는 부호, 점·선 등으로 조합한것을 의미합니다.

 

⚡ 문자열이란

그렇다면 문자열이란 무엇일까요?

하나 이상의 문자들의 집합을 의미하는데요, 예를들어 "안녕하세요."는 각각의 '안', '녕', '하', '세', '요' 가 모여서 만들어진 문자열을 의미합니다.

📌 문자열 만들기

파이썬에는 C언어나 JAVA처럼 변수의 타입이 존재하지 않습니다.

그래서 어떤 값을 집어넣느냐에 따라 그 변수가 문자형 변수 혹은 숫자형 변수 등등이 되어집니다.

 

이번에 저희는 문자열을 담은 문자형 변수를 만들어 볼텐데요 아래의 사진처럼 소스코드를 입력해주세요.

example이라는 변수를 만들고 그안에 쌍따옴표 혹은 따옴표["" or '']를 이용하여 "안녕하세요 반갑습니다." 라는 문자열을 담아주었습니다.

 

이렇게 문자열을 만들때는 쌍따옴표 혹은 따옴표를 이용해 해당 문자를 감싸주면 문자열이 되어집니다. 그리고 이 문자열을 변수에 담으면 문자형 변수가 되어지는 겁니다.

 

한번 방금 입력한 결과물을 함께 확인해보시죠.

type이라는 메서드를 이용해서 우리가 만든 example 변수가 어떤 형태인지를 확인이 가능하고 결과로 str 즉 string(=문자열)의 줄임말을 확인이 가능합니다.

 

이 문자열은 구지 변수안에 담지 않아도 그 자체를 print안에 기입해서 출력이 가능하며, 변수에 담은 상태로도 출력이 가능합니다.

📌 Escape 문자 사용하기

Escape라는 단어는 우리말로 탈출이라는 의미를 가지고 있습니다.

즉 escapre string은 탈출한 언어라는 의미를 가지게 됩니다.

 

탈출한 언어, 과연 무엇을 탈출했다는 이야기일까요?

지금부터 그 이야기를 다뤄보고자 합니다.

 

C언어든 Python이든 언어를 만들때 해당 언어를 만든 개발자가 문법으로 지정해둔 특수 코드들이 있습니다.

예를들어 [ \ ] 문자는 백슬래쉬 라고 읽으며 문법에서는 특수한 용도로 사용되어집니다. 가장 큰 예로 개행을 할때 사용되어지죠.

( [ \n ] 을 문자열 맨 앞에 추가하면 출력시 문자열 위에 비어있는 한줄의 공백이 생깁니다. )

위에 하이라이트부분이 개행을 명령하는 부분입니다.

\(백슬래쉬) 말고도 문자열을 만들기위한 "(쌍 따옴표), '(따옴표) 도 마음대로 사용이 불가능합니다.

 

이러한 코드들은 개발을 위해 문법으로 지정된 코드들이기 때문에 문자열로 사용하는것이 그냥 허용되어지지 않습니다.

 

그렇다면 어떻게해야 이러한 문자들을 문자열로 사용이 가능할까요?

정답은 바로 escape string으로 만들어주면 되는겁니다.

즉, 문법을 탈출한 언어인거죠!

 

이렇게 문법을 탈출시켜주기 위해서는 python에서는 해당 문자에 \(백슬래쉬)를 붙여주기만 하면 됩니다.

만약 화면에 백슬래쉬를 띄우고 싶다면 [ \\ ]

만약 화면에 쌍따옴표를 띄우고 싶다면 [ \" ] 를 입력해 주면 되는 것이죠.

📌 Python 인코딩

인코딩이란 무엇일까요?

인코딩은 정보의 형태나 형식을 변환하는 처리나 처리 방식을 의미합니다. 

C언어로 예를들어 설명하자면, C언어에 Char형 자료형은 1byte 크기를 가지게 되는데 1바이트는 8비트 즉 2*2*2*2*2*2*2*2 가지의 숫자표현이 가능해집니다.

 

각 숫자마다 특정 문자를 매칭시킨다고 가정했을때 1byte로  256가지의 문자를 표현할 수 있는것이죠.

이렇게 문자를 표현하는 방식은 여러가지가 있고 이 방법에따라 이진코드를 읽어 문자로 표현하도록 명시해둔 방식이 인코딩이라 이야기드릴 수 있겠습니다.

 

여기서 저희가 사용하는 Python은 기본적으로 Unicode기반이라고 합니다. 

 

그렇다면 여기서 Unicode(유니코드)가 무엇일까요?

유니코드란, 숫자와 글자, 즉 키와 값이 1:1로 매핑된 형태의 코드 유니코드라고 합니다.

위에서 설명드렸던 인코딩 방식이 유니코드 방식인 셈이죠.

 

다시말해 아스키코드로 0x41 = A 로 매핑된 것 처럼, 아스키코드로 표현할 수 없는 문자들을 유니코드라는 이름 아래 전 세계의 모든 문자를 특정 숫자(키)와 1:1로 매핑한 것입니다.

 

그렇다면 다음의 인코딩 방식중 어떤것들이 유니코드 방식일까요?

(ASCII, EUC-KR, CP949, UTF8, UTF16)

 

정답부터 말씀드리자면 이 중에 유니코드 그 자체인 것은 없습니다.

그나마 UTF-8, UTF-16는 유니코드를 '사용'하는 인코딩 방식이기 때문에 유니코드에 제일 가깝다고 볼 수는 있겠네요.

 

자 이제 인코딩 이야기를 꺼낸 이유를 설명할 수 있겠네요.

 

우리 vscode에 print문을 이용해 ┌┬┐을 출력해볼거에요.  아마 그냥 긁어서 출력하면 출력이 안되실꺼라 생각이 듭니다.

(윈도우 유저라는 가정하에)

 

앞서 말한거처럼 파이썬은 유니코드 기반이기 때문에 ┌┬┐와 같은 특수문자를 화면에 출력하기 위해서는 우리의 소스코드 최 상단에 어떤 인코딩 방식을 사용할것인지 명시를 해주어야 해당 특수문자를 읽어들일 수 있습니다.

 

현제 아직 어떠한 인코딩 방식도 사용하지 않고있기 때문에 우리의 소스코드 최 상단에 어떤 인코딩 방식을 사용할 것인지를 명시해 주어서 특수문자를 해독해 주어야합니다.

 

아래 그림처럼 입력 후 화면에 출력해 볼게요.

위에 그림처럼 최 상단에 utf-8 인코딩을 사용하겠다는 명시를 주석을 통해 가능하고 위와같이 해주었다면, 유니코드를 utf-8 인코딩 방식으로 해독하게 됩니다.

 

그렇다면 3줄에 특수문자 앞에 u는 무엇일까요?

 

일반적으로 유니코드 문자라는것을 지칭할때는 해당 문자열 앞에 u를 붙여주어 표현해줍니다.

특수문자 말고 유니코드를 나열한 테이블에 있는 방법으로도 똑같은 결과를 출력도 가능합니다.

 

 

'Python > 기초문법' 카테고리의 다른 글

[제어문] 조건문 if는 무엇일까요?  (0) 2019.04.09
[문자열] index / .split()  (0) 2018.12.21
[컨테이너] List/ tuple/ dictionary  (0) 2018.12.20
Posted by Kim_gorilla

프로그래밍 언어에는 '제어문'이라 하는 특이한 문장이 있습니다.

프로그래밍에서의 제어문이란?

프로그램의 처리 흐름을 제어할 수 있는 구문을 말합니다. 그 종류로는 조건문, 반복문, 분기문, 예외처리 구문이 있습니다. 각각의 제어문들은 python에서 서로 다른 기능을 제공합니다.

 

그렇다면 조건문은 무엇인가요?

이번 포스팅에서 배우게 될 조건문이란, 말 그대로 프로그래머가 지정한 어떤 조건을 만족하면, 실행이 되는 구문을 이야기합니다. 그렇다면 지정 조건을 만족하지 못하면 해당 구문은 실행되지 않고 건너뛰는 걸 의미합니다.

 

PYTHON에서 사용되는 조건문은 if문입니다.

if문의 사용법을 배우기 전에! 꼭 알아야할 파이썬의 특징!

파이썬은 제어문, 함수, 클래스 등 어떠한 구문의 구분이 필요한 부분에서 들여쓰기를 통해 구분을 하게 됩니다.

보통의 프로그래밍 언어는 들여쓰기가 아닌 중괄호, 즉 괄호를 통해서 해당 구문을 해석합니다.

하지만 파이썬은 들여쓰기 된 모든 문장이 하나의 구문으로 묶여서 해석되기 때문에 프로그래밍을 할 때 주의해야합니다.

 

 

if문의 사용법

1
2
3
4
5
money = True
if money :
    print('돈이 있다.')
else :
    print('돈이 없다.')
cs

이와 같이 사용할 수 있습니다. if 문은 조건문이 True라는 값의 형태로 있을 때 실행이 가능하는 것을 의미합니다. 따라서 'if 조건문 : '의 형태를 띄게 됩니다.

그리고 else라는 특이한 구조를 갖게 되는데 이 else는 if에 해당하지 않는 모든 사항은 이 구문에서 처리됩니다.

또한 elif라는 더욱 특이한 구조를 갖게 되는데 이는 if에 해당하지 않는 조건문 중 elif에 해당하는 조건을 처리하는 것입니다.

 

1
2
3
4
5
6
7
8
9
money = 30000
 
 
if money > 30000 :
    print('돈이 30000원 보다 많이있다.')
elif money == 30000 :
    print('돈이 30000원 있다.')
else :
    print('돈이 없다.')
cs

해당 조건문을 한번 확인해 보겠습니다. 이렇게 if는 'if 조건 :, elif 조건 :, else' 이 세가지로 나뉘는 것을 알 수 있습니다.

 

 

if에서 사용되는 조건의 종류

 

조건의 종류에 대해서 설명해드리겠습니다. 고등학교 수학시간으로 돌아가보겠습니다.

조건문과 매칭되는 수학시간이 어떤 것이 있을까요?

바로 명제입니다. 명제로 생각하면, 이해하기가 더욱 편하실 수 있습니다.

 

 

and, or, not

연산자 설명
x and y x와 y 모두 참이여야한다.
x or y x와 y 중 하나 이상 참이다.
not x x가 아니면 참이다.

in, not in

연산자 설명
x in 리스트 리스트 안에 x가 있으면 참
x in 튜플 튜플 안에 x가 있으면 참
x in 문자열 문자열 안에 x가 있으면 참

위의 조건들이 기본적으로 사용되는 조건들입니다.

또 다른 조건들을 알아봅시다.

 

비교 연산자

비교연산자 설명
x > y x가 y보다 크면 참
x < y x가 y보다 작으면 참
x == y x와 y가 같으면 참
x != y x와 y가 다르면 참
x >= y x가 y 이상이면 참
x <= y x가 y 이하이면 참

초등학교 수학시간에 배우는 부등호를 사용하고 추가된 사항이 있다면 ==와 != 정도가 있습니다. 일반 등호와 구별하기 위해서 조건부 등호는 두 개를 사용하여 ==를 사용하고, 서로 같지 않다는 프로그래밍 언어에서 보통 not을 의미하는 !를 추가하여 !=를 사용합니다.

 

 

사용 예시

pocket = ['paper', 'cellphone']
card = True
if 'money' in pocket:
... print("택시를 타고가라")
... elif card:
... print("택시를 타고가라")
... else:
... print("걸어가라")
...
택시를 타고가라

a = "Life is too short, you need python"
if 'wife' in a:
... print('wife')
... elif 'python' in a and 'you' not in a:
... print('python')
... elif 'shirt' not in a:
... print('shirt')
... elif 'need' in a:
... print('need')
... else:
... print('none')
...

need

 

'Python > 기초문법' 카테고리의 다른 글

[BASIC] 문자열  (0) 2020.03.22
[문자열] index / .split()  (0) 2018.12.21
[컨테이너] List/ tuple/ dictionary  (0) 2018.12.20
Posted by 알 수 없는 사용자

[문자열] index / .split()



오늘은 문자열에 대해 알아봅시다.


  • 문자열이란 일반적으로 우리가 잘 알고있는 문장을 뜻합니다.

    'Hello world!'와 같은 것들이 문자열인 셈이죠.

  • 이 문자열을 변수에 담을 때, 사실 하나의 값들이 통째로 들어가는 개념이 아니라
    문자열을 이루고 있는 각각의 문자들이 하나의 변수이름을 공유하는 개념으로
    저장이 됩니다.
    이게 무슨 말이냐면...


이렇게 특정 문자열을 변수에 입력하고 변수[원하는 index=순번값의 형태로
작성을 한 후 출력해주게 되면, 해당 인덱스 순번에 해당하는 문자 값이 출력이 됩니다.


이때, 문자열에서 각각의 문자들이 위치한 순번을 index라고 부릅니다.


그럼 사용자로부터 하나의 문자열로 된 주문서를 받았을때, 

특정 규칙에 따라 나누는 방법을 배워보겠습니다.


방법은 여러가지가 있겠지만,
가장 간단하고 대표적인 방법은 .split() 함수를 사용하는것입니다.





'Python > 기초문법' 카테고리의 다른 글

[BASIC] 문자열  (0) 2020.03.22
[제어문] 조건문 if는 무엇일까요?  (0) 2019.04.09
[컨테이너] List/ tuple/ dictionary  (0) 2018.12.20
Posted by Kim_gorilla

[컨테이너] List/ tuple/ dictionary


List


Tuple


Dictionary

 


'Python > 기초문법' 카테고리의 다른 글

[BASIC] 문자열  (0) 2020.03.22
[제어문] 조건문 if는 무엇일까요?  (0) 2019.04.09
[문자열] index / .split()  (0) 2018.12.21
Posted by Kim_gorilla