[BASIC] 문자열
👨💻 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 |