Responsive Advertisement

파이썬 프로그래밍 - 자료형, 문자열 자료형, 따옴표 사용법, 이스케이프 문자, 문자열 연산

 이전 글에서 숫자 자료형에 대해 알아보았는데 이번에는 문자열 자료형에 대해 살펴보려고 합니다. 프로그래밍을 하다보면 문자열 자료형도 많이 사용하게 되는데 어떻게 사용하는지 알아보아요.

썸네일

문자열 자료형

프로그래밍 언어에서 문자에 대한 자료형을 문자열이라고 합니다. 한 글자만, 자음 하나만 입력되어도 문자열입니다. 문자열은 반드시 작은따옴표나 큰따옴표 안에 작성해야 합니다. 일반적인 명령어의 키워드와 구분이 되어야 해요. 그냥 쓰는 print는 명령어가 되지만 'print'나 "print"처럼 따옴표 안에 작성하는 것은 문자열 자료가 되는 것이지요.

따옴표 사용법

안녕하세요 출력

'안녕하세요'를 출력하기 위한 명령어를 실행해 보았습니다. 문자열을 사용할 때 기억해야 할 것은 따옴표의 사용법이에요. 작은따옴표로 연 것은 작은따옴표로 닫고, 큰따옴표로 연 것은 큰따옴표로 닫아야 합니다. 첫 번째 명령어는 작은따옴표로 열고 닫은 문자열의 출력이고, 두 번째 명령어는 큰따옴표로 열고 닫은 문자열의 출력이에요. 출력 결과에도 차이가 없습니다.

반면에, 세 번째 명령어는 작은따옴표로 열었지만 큰따옴표로 닫은 문자열을 출력하고자 했더니 오류가 발생했습니다. 자세히 보면 큰따옴표로 닫은 뒤의 닫는 괄호가 초록색으로 나타나고 있어요. 문자열이 종료되지 않았다고 판단하고 있는 것입니다. 작은따옴표로 열었기 때문에 문자열의 끝은 작은따옴표여야 합니다.

프로그래밍 과정에는 이러한 문법요소들이 많습니다. 문법상 무언가 열었다면, 열었던 것으로 닫아주어야 합니다. 따옴표를 열었다면 따옴표로, 괄호를 열었다면 괄호로 닫아주어야 합니다. 그래야 인터프리터나 컴파일러가 '여기까지가 네가 의도한 명령어지?'하고 의도를 알 수 있습니다.

덧붙여, 다른 프로그래밍 언어에서는 큰따옴표와 작은따옴표를 엄밀히 구분하기도 하는데, 파이썬은 실행결과에 차이가 없습니다. 기호의 통일에만 주의해 주세요.

이스케이프 문자

작은따옴표와 큰따옴표는 인터프리터가 문자열을 인지하기 위해 특별히 기억하고 있는 특수기호입니다. 그런데, 작은따옴표 자체를, 또는 큰따옴표 자체를 표기하고 싶을 때는 어떻게 표기할 수 있을까요? 예컨대, 다음과 같은 문자열을 출력해 봅시다.

우리가 배우고자 하는 언어는 '파이썬'이다.

아마도 다음과 같이 작은 따옴표 안에 문자열을 작성하거나 큰따옴표 안에 문자열을 작성하게 될 것입니다.

print('우리가 배우고자 하는 언어는 '파이썬'이다.')
print("우리가 배우고자 하는 언어는 '파이썬'이다.")

실제로 실행 결과는 어떨까요?

따옴표 출력

작은따옴표 안에 작성한 문자열은 오류가 났고, 큰따옴표 안에 작성한 문자열은 정상적으로 출력이 되었습니다. 작은따옴표 안에 작선한 문자열은 중간의 작은따옴표가 문자열을 인지하는 과정을 중단시켜 오히려 파이썬을 인지하지 못하게 된 것이에요. 반면에 두 번째 명령어에서는 큰따옴표로 열었기 때문에 중간의 작은따옴표가 여전히 큰따옴표가 나타나지 않아 문자열로 인지되고 있는 것입니다.

이처럼 문자열 중간에 큰따옴표 또는 작은따옴표를 출력하고자 한다면 서로 반대되는 따옴표를 혼합하여 사용하면 적당히 해결할 수 있습니다. 그런데 이런 건 어떻게 출력할까요?

선생님이 말씀하셨다. "우리가 배우고자 하는 언어는 '파이썬'이다."

문자열 안에 큰따옴표와 작은따옴표가 모두 있는 이런 경우 말입니다. 특수한 기호들을 문자열로 취급하도록 바꿔주는 것을 이스케이프 문자라고 하는데, 다음과 같이 작성할 수 있습니다.

print("선생님이 말씀하셨다.\"우리가 배우고자 하는 언어는 \'파이썬\'이다.\"")

실행해보면, 의도한대로 출력이 됩니다. 백슬래시(\)를 사용하면 이렇게 특수기호를 문자열로 취급하여 출력할 수 있습니다. 다음과 같은 이스케이프 문자를 사용해 보세요.

이스케이프

이와 같이 이스케이프 문자를 이용하면 따옴표뿐 아니라, 줄바꿈이나 탭, 알람 등의 특수한 기능을 적용할 수 있습니다. 참고로, 이스케이프 문자를 전혀 인지하지 못하도록 문자열을 구성할 수도 있습니다. raw string이라고 해서, 문자열의 첫머리에 'r'을 입력해 주면 이스케이프 문자를 반영하지 않습니다. 예를 들어 다음과 같은 명령어를 작성해 봅시다.

print('파일 경로는 C:\name입니다')

별 문제가 없을 것 같지만 실행해 보면 중간의 \n을 줄바꿈 이스케이프로 인식해 다음과 같은 결과를 얻게 됩니다.

raw str 미적용


문자열의 머리에 r을 입력하여 raw string을 적용해 봅시다.

print(r'파일 경로는 C:\name입니다')

raw str 적용

실행결과 줄바꿈 이스케이프 문자를 인지하지 않고 의도했던 결과를 얻을 수 있습니다.


문자열의 연산

문자열 연산

사칙연산은 문자열에도 적용할 수 있습니다. 모든 연산이 가능한 것은 아니지만, 덧셈으로 문자열을 이어붙이고 곱셈으로 반복 출력을 할 수도 있습니다.


마치며

문자열을 출력한다는 것은 아주 기초적이면서도, 사용자에게 프로그램에 대한 핵심 정보를 전달하기 위해 꼭 필요한 작업입니다. 프로그램 자체에 대한 설명뿐 아니라, 사용자에게 입력을 유도하거나 처리된 연산 결과를 돌려주는 등 사용자가 접하는 많은 정보가 문자열의 형태로 제공됩니다. 따라서 문자열을 출력하기 위한 명령어에 익숙해 지는 것은 프로그래머의 필수과정이라고 할 수 있어요. 더 나아가 사용자의 입장에서 어떤 안내가 필요할지 고민하며 인터페이스를 고민하는 역량을 기를 수 있습니다.

{getContent} $results={5} $label={recent} $type={block}