7.1 문자열을 변수에 저장하기

Unit 7. 문자열 사용하기

'Unit 3 Hello, world!로 시작하기'에서 문자열을 출력해본 것 기억나시죠? 문자열에는 생각보다 다양한 기능이 숨어 있습니다. 이번에는 문자열에 대해 좀 더 자세히 알아보겠습니다.

7.1 문자열을 변수에 저장하기

앞에서 x = 10과 같이 변수를 만들고 숫자를 할당했었죠? 마찬가지로 변수에 문자열을 할당하면 문자열이 저장됩니다. 먼저 문자열 'Hello, world!'을 변수에 저장하고 출력해보겠습니다.

>>> hello1 = 'Hello, world!'
>>> print(hello1)
Hello, world!

여기서는 Hello, world!' '(작은따옴표)로 묶었습니다. 파이썬에서는 문자열을 사용할 때 주로 작은따옴표를 사용합니다. 물론 " "(큰따옴표)로도 문자열을 사용할 수도 있습니다.

>>> hello2 = "Hello, world!"
>>> print(hello2)
Hello, world!

문자열은 영문 문자열뿐만 아니라 한글 문자열도 사용할 수 있습니다.

>>> hello3 = '안녕하세요'
>>> print(hello3)
안녕하세요

이번에는 여러 줄로 된 문자열(multiline string)을 변수에 저장해보겠습니다. '''(작은 따옴표 3개)로 시작하고 Hello, world!를 입력한 다음에 엔터 키를 누르면 다음 줄로 이동합니다. 이런 방식으로 문자열을 계속 입력하고 마지막 줄에서 '''로 닫은 뒤 엔터 키를 누르면 >>> 프롬프트로 돌아옵니다.

>>> hello = '''Hello, world!
안녕하세요.
Python입니다.'''
>>> print(hello)
Hello, world!
안녕하세요.
Python입니다.


hello의 내용을 출력해보면 입력한 문자열 세 줄이 출력됩니다. 사실 파이썬 셸에서는 여러 줄로 된 문자열을 사용할 일이 많지 않습니다. 여러 줄로 된 문자열은 주로 .py스크립트 파일에서 사용합니다.

이처럼 여러 줄로 된 문자열은 '''(작은 따옴표 3개)로 시작하여 '''로 끝나며, 이 문자열을 변수에 그대로 저장할 수 있습니다. 물론 """(큰 따옴표 3개)로 시작하여 """로 끝내도 됩니다.

그런데 문자열을 표현할 때 작은 따옴표와 큰 따옴표 중 한 가지로 통일하지 않고 왜 이렇게 두 가지 방식을 사용할까요? 바로 문자열 안에 작은 따옴표와 큰 따옴표를 포함하기 위해서 그렇습니다.

>>> print('Hello, "Python"')
Hello, "Python"
>>> print("Hello, 'Python'")
Hello, 'Python'

이렇게 작은 따옴표 안에 큰 따옴표를 넣을 수 있고, 큰 따옴표 안에는 작은 따옴표를 넣을 수 있습니다. 단, 작은 따옴표 안에 작은 따옴표를 넣거나 큰 따옴표 안에 큰 따옴표를 넣을 수는 없습니다.

>>> print('Hello, 'Python'')
File "<stdin>", line 1
    print('Hello, 'Python'')
                        ^
SyntaxError: invalid syntax
>>> print("Hello, "Python"")
  File "<stdin>", line 1
    print("Hello, "Python"")
                        ^
SyntaxError: invalid syntax

하지만 여러 줄로 된 문자열은 작은 따옴표 안에 작은 따옴표와 큰 따옴표를 둘 다 넣을 수 있습니다. 또한, 큰 따옴표 안에도 작은 따옴표와 큰 따옴표를 넣을 수 있습니다. 이번에는 스크립트 파일로 만들고 실행해봅시다.

string_multiline_quote.py

single_quote = '''"안녕하세요."
'파이썬'입니다.'''
 
double_quote1 = """"Hello"
'Python'"""
 
double_quote2 = """Hello, 'Python'"""    # 한 줄로 작성
 
print(single_quote)
print(double_quote1)
print(double_quote2)

실행 결과

"안녕하세요."
'파이썬'입니다.
"Hello"
'Python'
Hello, 'Python'
참고 | 문자열에 따옴표를 포함하는 다른 방법

작은 따옴표 안에 작은 따옴표를 넣을 수는 없을까요? 방법이 있습니다. 다음과 같이 작은 따옴표 앞에 \(역슬래시)를 붙이면 됩니다.

>>> print('Hello, \'Python\'')
Hello, 'Python'

물론 큰 따옴표도 print("Hello, \"Python\"")처럼 큰따옴표 앞에 \를 붙이면 됩니다.

이처럼 문자열 안에 ', " 등의 특수 문자를 포함하기 위해 앞에 \를 붙이는 방법을 이스케이프(escape)라고 부릅니다. 자세한 내용은 '부록 47.2 이스케이프 시퀀스'를 참조하세요.

참고 | 한글 문자열 출력이 안 될 때

파이썬 스크립트 파일에 한글 문자열을 넣었을 때 에러가 나는 경우가 있습니다.

C:project>python string_multiline_quote.py
  File "string_multiline_quote.py", line 1
SyntaxError: Non-UTF-8 code starting with '\xbe' in file string_multiline_quote.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

에러가 나는 이유는 .py 파일을 UTF-8이 아닌 CP949로 저장해서 그렇습니다. 이때는 스크립트 파일을 UTF-8로 저장하면 됩니다. 보통 메모장을 사용하면 기본 인코딩이 CP949라서 이런 문제가 종종 생깁니다. 메모장에서 UTF-8로 저장하려면 파일(F) > 다른 이름으로 저장(A)… > 인코딩(E)에서 UTF-8을 선택한 뒤 저장하면 됩니다. 이런 문제를 예방하려면 파이썬 IDLE, PyCharm 등 파이썬 전용 편집기나 개발 도구를 사용하면 됩니다. 이들 편집기, 개발 도구는 기본 인코딩이 UTF-8입니다.