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입니다.