Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

9 문자열 1부

Updated: 15 mei 2026

문자열은 문자와 기호가 순서대로 나열된 값이다. 앞서 문자열을 연산에 활용하고, print()로 출력하고, input() 함수의 반환값으로 다뤘으며, str() 함수와 f-문자열도 간단히 사용했다.

이번 장은 문자열을 정확히 표현하고 출력하는 방법에 초점을 둔다. 다음 장에서는 문자열을 순차 자료형으로 다루는 인덱싱, 슬라이싱, 문자열 메서드를 소개한다.

9.1빈 문자열

어떤 문자도 포함하지 않는 문자열을 빈 문자열empty string이라 한다. 빈 문자열은 다음 세 가지 방식으로 만들 수 있다.

empty_str1 = ''
empty_str2 = ""
empty_str3 = str()

print(empty_str1 == empty_str2 == empty_str3)
True

빈 문자열을 출력하면 화면에는 아무것도 보이지 않는다. 하지만 보이지 않을 뿐이며, 길이가 0인 문자열 값이다.

print(empty_str1)
print(len(empty_str1))

0

반면에 ' '는 공백 문자 하나를 포함한 문자열이다. 역시 눈에 보이지 않지만 길이가 1인 문자열 값이다.

blank = ' '
print(len(blank))
1

9.1.1예제

예제 1

빈 문자열에서 시작하여 for 반복문으로 문자열 '1234'를 만들어라. 단, range(4)를 이용한다.

답:

빈 문자열에 숫자를 문자열로 바꾼 값을 차례대로 이어붙인다.

result = ''
for i in range(4):
    result = result + str(i + 1)

print(result)
1234

예제 2

작은 도서관에서 새 책장 번호표를 만든다. 처음에는 아무 글자도 없는 번호표에서 시작하여 A1A2A3을 완성하라. 단, range(3)을 이용한다.

답:

빈 문자열을 번호표의 출발점으로 두고, 반복할 때마다 A와 번호를 이어붙인다.

label = ''
for floor in range(3):
    label = label + 'A' + str(floor + 1)

print(label)
A1A2A3

9.1.2연습문제

문제 1

아래 코드가 False를 출력하는 이유를 설명하라.

print('' == ' ')
False

문제 2

행사장 입구에서 손님에게 순번 팔찌를 나눠 준다. 빈 문자열에서 시작하여 for 반복문으로 손님1 손님2 손님3 형태의 안내 문구를 만들어 출력하라.

9.2화이트 스페이스

화이트 스페이스whitespace는 화면에 직접 보이지는 않지만 문자열 안에서 공백, 줄바꿈, 간격 등을 나타내는 문자다. 다음 세 가지 화이트 스페이스를 가장 많이 사용한다.

표기의미
' '공백 문자
'\t'
'\n'줄바꿈

다음 세 개의 문자열엔 각각 공백, 탭, 줄바꿈 화이트 스페이스가 포함되어 있어서 출력 결과가 서로 많이 다르다.

print('A B')   # 공백 포함
print('A\tB')  # 탭 포함
print('A\nB')  # 줄바꿈 포함
A B
A	B
A
B

화이트 스페이스는 모두 한 개의 문자로 취급된다. 따라서 위 세 문자열의 길이 모두 3이다.

print(len('A B'))
print(len('A\tB'))
print(len('A\nB'))
3
3
3

9.2.1예제

예제 1

문자열 ' \t\n'을 세 번 반복한 문자열의 길이를 출력하라.

답:

공백, 탭, 줄바꿈은 모두 길이 1의 문자이므로 한 묶음의 길이는 3이다.

spaces = ' \t\n' * 3
print(len(spaces))
9

예제 2

카페 직원이 간단한 주문표를 출력한다. f-문자열을 이용하여 다음과 같이 출력하는 두 줄 코드를 작성하라.

Menu    Price
Latte    2000

답:

print(f'{"Menu":<8}{"Price":>5}')
print(f'{"Latte":<8}{2000:>5}')
Menu    Price
Latte    2000

9.2.2연습문제

문제 1

문자열 'A\tB'의 길이를 출력하라.

문제 2

안내 데스크에서 방문자 명찰을 출력한다. f-문자열을 이용하여 다음과 같이 출력하는 두 줄 코드를 작성하라.

Name    Time
Ada     09:30

9.3이스케이프 시퀀스

문자열에 따옴표, 백슬래시, 화이트 스페이스처럼 특별한 의미를 갖는 문자를 포함시키려면 백슬래시(\)로 시작하는 이스케이프 시퀀스escape sequence를 사용한다.

표기문자열에 들어가는 문자
\'작은따옴표
\"큰따옴표
\\백슬래시 자체
\n줄바꿈
\t

따옴표 기호 포함

문자열을 감싸는 따옴표와 동일한 따옴표를 문자열 안에 넣을 때는 이스케이프 시퀀스가 필요하다.

sentence1 = 'I\'m learning Python.'
sentence2 = "그가 \"좋아요\"라고 말했다."

print(sentence1)
print(sentence2)
I'm learning Python.
그가 "좋아요"라고 말했다.

이스케이프 시퀀스를 사용하지 않으면 SyntaxError 오류가 발생한다. 이유는 문자열의 시작과 끝이 명확하지 않게 되기 때문이다.

sentence1 = 'I'm learning Python.'

print(sentence1)
  Cell In[6], line 1
    sentence1 = 'I'm learning Python.'
                                     ^
SyntaxError: unterminated string literal (detected at line 1)

반면에 감싸는 따옴표를 문자열 내부에 사용된 따옴표와 다르게 하면 이스케이프 시퀀스를 사용하지 않아도 오류가 발생하지 않는다.

sentence3 = "I'm learning Python."
print(sentence3)
I'm learning Python.

백슬래시 기호 포함

백슬래시 기호 자체를 문자열에 넣으려면 \\처럼 두 번 적는다.

path = 'C:\\Users\\student\\notes.txt'

print(path)
C:\Users\student\notes.txt

9.3.1예제

예제 1

큰따옴표로 감싼 문자열 안에 큰따옴표 자체를 넣어 그는 "Python"을 좋아한다.를 출력하라.

답:

print("그는 \"Python\"을 좋아한다.")
그는 "Python"을 좋아한다.

예제 2

탭, 줄바꿈, 백슬래시를 모두 사용하여 첫 줄에는 탭 뒤의 Hello, 둘째 줄에는 \가 출력되게 하라.

답:

print('\tHello\n\\')
	Hello
\

예제 3

여행 기록 앱에 남길 문장을 만든다. 출력 결과가 민지는 "출발!"이라고 말하고 C:\trip에 기록했다.가 되도록 하라.

답:

print('민지는 \"출발!\"이라고 말하고 C:\\trip에 기록했다.')
민지는 "출발!"이라고 말하고 C:\trip에 기록했다.

9.3.2연습문제

문제 1

작은따옴표로 감싼 문자열을 사용하여 I'm learning Python.을 출력하라.

문제 2

문자열 C:\Users\student\notes.txt를 출력하라.

문제 3

비밀 실험실의 로그에 경고: "door\main" 확인이라는 문장을 남기려 한다. 따옴표와 백슬래시가 화면에 그대로 보이도록 출력하라.

9.4날 문자열

문자열 앞에 r 또는 R을 붙이면 날 문자열raw string이 된다. 날 문자열에서는 \n, \t 같은 이스케이프 시퀀스가 특별한 기능으로 해석되지 않고 대부분 그대로 보존된다.

다음 코드에서 일반 문자열과 날 문자열의 차이를 확인하라.

normal = 'Python\nis\teasy'
raw = r'Python\nis\teasy'

print(normal)
print(raw)
Python
is	easy
Python\nis\teasy

날 문자열은 특히 파일 경로처럼 백슬래시가 자주 등장하는 문자열에서 유용하게 활용된다.

print('C:\\some\\name')
print(r'C:\some\name')
C:\some\name
C:\some\name

9.4.1예제

예제 1

일반 문자열과 날 문자열에서 \t\n이 어떻게 다르게 보이는지 확인하라.

답:

print('A\t\nB')
print(r'A\t\nB')
A	
B
A\t\nB

예제 2

사진 정리 프로그램이 오늘 저장할 폴더를 안내한다. 날 문자열을 사용하여 D:\album\2026\spring 경로가 그대로 보이게 출력하라.

답:

print(r'D:\album\2026\spring')
D:\album\2026\spring

9.4.2연습문제

문제 1

아래 두 코드의 출력 차이를 설명하라.

print('C:\new')
print(r'C:\new')
C:
ew
C:\new

문제 2

다음 코드를 실행할 때 오류가 발생하는 이유를 설명하고 대안을 제시하라.

print(r'C:\Users\student\')
  Cell In[92], line 1
    print(r'C:\Users\student\')
          ^
SyntaxError: unterminated string literal (detected at line 1); perhaps you escaped the end quote?

9.5f-문자열 서식 지정

f-문자열은 값을 문자열 안에 넣는 데 그치지 않고, 출력 폭과 정렬 방식, 소수점 자릿수 등의 서식을 지정할 수 있다. 서식 지정은 중괄호 안에서 콜론(:) 뒤에 작성한다.

f'{표현식:서식}'

9.5.1정렬과 폭

문자열을 일정한 칸 안에 배치하려면 폭을 지정한다. <, >, ^는 각각 왼쪽, 오른쪽, 가운데 정렬을 의미한다. 아래 코드에서 대괄호는 폭의 처음과 끝을 보다 명확히 보여주기 위해 사용된다.

s1 = 'hi'

print(f'[{s1:<10}]') # 왼쪽 정렬
print(f'[{s1:>10}]') # 오른쪽 정렬
print(f'[{s1:^10}]') # 가운데 정렬
[hi        ]
[        hi]
[    hi    ]

남는 칸을 공백이 아닌 다른 문자로 채울 수도 있다. 채움 문자는 정렬 기호 앞에 적는다.

s2 = 'hello'

print(f'{s2:+<10}') # 왼쪽 정렬, 빈칸 대신 +로 채움
print(f'{s2:0>10}') # 오른쪽 정렬, 빈칸 대신 0로 채움
print(f'{s2:-^10}') # 가운데 정렬, 빈칸 대신 -로 채움
hello+++++
00000hello
--hello---

9.5.2소수점 자릿수

부동소수점을 출력할 때 {값:.nf} 형식을 사용하면 소수점 아래 n자리까지 반올림해서 보여준다.

num1 = 17.153742
num2 = 2.778

print(f'{num1:.1f}')
print(f'{num1:.2f}')
print(f'{num1:.3f}')
print(f'{num2:.2f}')
17.2
17.15
17.154
2.78

폭, 정렬, 채우기, 소수점 자릿수 지정을 모두 함께 사용할 수 있다.

print(f'[{num1:10.2f}]')
print(f'[{num2:>010.2f}]')
print(f'[{num1:<10.2f}]')
print(f'[{num2:=^10.2f}]')
[     17.15]
[0000002.78]
[17.15     ]
[===2.78===]

9.5.3예제

예제 1

변수 name에 저장된 'Ada'를 10칸 폭에서 왼쪽, 오른쪽, 가운데로 정렬하여 출력하라.

답:

name = 'Ada'

print(f'[{name:<10}]')
print(f'[{name:>10}]')
print(f'[{name:^10}]')
[Ada       ]
[       Ada]
[   Ada    ]

예제 2

정수 7을 네 칸 폭으로 오른쪽 정렬하고, 빈 칸은 0으로 채워 출력하라.

답:

num = 7
print(f'{num:0>4d}')
0007

예제 3

두 점수 93.456, 7.8을 전체 폭 8칸, 소수점 아래 첫째 자리까지 출력하라.

답:

score1 = 93.456
score2 = 7.8

print(f'{score1:8.1f}')
print(f'{score2:8.1f}')
    93.5
     7.8

예제 4

탐사대장이 짧은 보고서를 만든다. 이름 Nora는 8칸 왼쪽 정렬, 거리 23.36778은 10칸 폭에 소수점 둘째 자리까지 출력하라.

답:

name = 'Nora'
distance = 23.36778

print(f'대원:{name:<8}거리:{distance:10.2f}')
대원:Nora    거리:     23.37

9.5.4연습문제

문제 1

문자열 'hi'를 6칸 폭에서 가운데 정렬하고, 빈 칸은 -로 채워 출력하라.

문제 2

정수 42를 다섯 칸 폭으로 오른쪽 정렬하고, 빈 칸은 0으로 채워 출력하라.

문제 3

부동소수점 -84.99888을 소수점 아래 셋째 자리까지 출력하라.

문제 4

작은 극장의 좌석표를 출력한다. 구역 이름 A는 4칸 가운데 정렬하고 빈 칸은 *로 채운다. 가격 12000.5는 10칸 폭에 소수점 아래 첫째 자리까지 출력하여 한 줄로 보여라.