본문 바로가기
AI/Coding

파이썬 입문 3편 — 문자열 완전 정복: 인덱싱·슬라이싱부터 f-string·인코딩까지

by 거대웅 TitanBear 2026. 6. 11.

📚 「파이썬 완전 정복」 시리즈 3편

2편에서는 모든 계산의 바탕인 숫자형을 다뤘습니다. 이번 편의 주인공은 우리가 화면에 띄우고, 입력받고, 저장하는 거의 모든 데이터의 모습인 문자열(string)입니다. (앞 편을 안 보셨다면 먼저 읽고 오시길 권합니다.)

이름, 주소, 메시지, 파일 경로, 웹페이지의 글자 한 줄까지 — 프로그램이 다루는 데이터의 절반 이상은 문자열입니다. 그래서 문자열을 자유자재로 자르고, 붙이고, 바꾸고, 모양을 다듬는 능력은 파이썬 실력의 기본기입니다. 이번 편에서 문자열의 거의 모든 것을 한 번에 정리합니다.

이 편에서 배우는 것

① 문자열을 만드는 세 가지 따옴표   ② 인덱싱과 슬라이싱으로 잘라 쓰기   ③ 자주 쓰는 메서드 총정리   ④ 포매팅 3종 — %, format(), f-string   ⑤ 이스케이프·원시문자열·멀티라인   ⑥ 유니코드와 인코딩(encode/decode)

1. 문자열을 만드는 법 — 따옴표 세 가지

파이썬에서 문자열은 작은따옴표(')큰따옴표(")로 감싸 만듭니다. 둘은 기능이 같지만, 문장 안에 따옴표가 들어갈 때 서로 번갈아 쓰면 편합니다.

print('파이썬은 "재미있다"고 말했다')
print("그녀의 이름은 O'Brien")

# 세 따옴표는 여러 줄 문자열에 사용
menu = """오늘의 메뉴
- 김밥
- 라면"""
print(menu)

2. 인덱싱과 슬라이싱 — 문자열 잘라 쓰기

문자열은 글자들이 순서대로 늘어선 시퀀스입니다. 그래서 위치 번호(인덱스)로 한 글자를 꺼내거나, 범위를 지정해 여러 글자를 잘라낼 수 있습니다. 인덱스는 0부터 시작하고, 음수는 뒤에서부터 셉니다.

s = "Python"
print(s[0], s[5], s[-1])   # P n n

# 슬라이싱: s[시작:끝]  (끝 인덱스는 포함하지 않음)
print(s[0:3])   # Pyt
print(s[3:])    # hon
print(s[:2])    # Py
print(s[::-1])  # nohtyP  (뒤집기)
print(s[::2])   # Pto     (두 칸씩 건너뛰기)
표현식 의미 결과("Python")
s[0] 첫 글자 P
s[-1] 마지막 글자 n
s[1:4] 1번부터 3번까지 yth
s[::-1] 전체 뒤집기 nohtyP

⚠️ 흔한 실수 — 문자열은 바꿀 수 없습니다(불변/immutable)

한 글자만 바꾸려고 s[0] = "J"처럼 쓰면 TypeError: 'str' object does not support item assignment 오류가 납니다. 문자열은 한 번 만들면 내용을 고칠 수 없습니다. 대신 새 문자열을 만들어 대입하세요: s = "J" + s[1:]Jython.

3. 자주 쓰는 문자열 메서드 총정리

메서드는 문자열 뒤에 점을 찍고 호출하는 기능입니다. 가장 자주 쓰는 것만 추려도 실무의 대부분을 처리할 수 있습니다.

t = "  Hello, World  "
print(t.strip())                    # 'Hello, World' (양쪽 공백 제거)
print("hello".upper())              # HELLO
print("WORLD".lower())              # world
print("hello world".replace("world", "python"))  # hello python
print("a,b,c".split(","))           # ['a', 'b', 'c']
print("-".join(["2026", "06", "11"]))  # 2026-06-11
print("python".startswith("py"))    # True
print("data.csv".endswith(".csv"))  # True
print("hello world".find("world"))  # 6  (없으면 -1)
print("Hello".count("l"))           # 2

4. 문자열 포매팅 — %, format(), f-string

변수 값을 문자열 안에 끼워 넣는 것을 포매팅이라고 합니다. 파이썬에는 세 가지 방식이 있는데, 지금 새로 배운다면 f-string만 익혀도 충분합니다. 가장 짧고 읽기 쉽기 때문입니다.

name, age = "지민", 20

print("%s님은 %d살" % (name, age))      # 옛날 방식
print("{}님은 {}살".format(name, age))   # format() 방식
print(f"{name}님은 {age}살")             # f-string (추천!)

# f-string은 서식 지정도 강력합니다
print(f"{3.14159:.2f}")    # 3.14      (소수점 둘째 자리)
print(f"{255:08d}")        # 00000255  (8칸, 0으로 채움)
print(f"{1000000:,}")      # 1,000,000 (천 단위 콤마)
print(f"{age=}")           # age=20    (디버깅에 편리)

5. 이스케이프 문자와 원시 문자열, 멀티라인

줄바꿈이나 탭처럼 눈에 보이지 않는 특수 문자는 역슬래시(\)로 표현합니다. 이를 이스케이프 문자라고 합니다.

print("줄1\n줄2\t탭")   # \n 줄바꿈, \t 탭

# 윈도우 경로처럼 역슬래시가 많으면 r"" (원시 문자열)이 편리
print(r"C:\new\test")   # C:\new\test  (그대로 출력)

자주 쓰는 이스케이프: \n(줄바꿈), \t(탭), \\(역슬래시 자체), \"(큰따옴표).

6. 유니코드와 인코딩 (encode / decode)

파이썬3의 문자열은 모두 유니코드라서 한글·이모지·외국어를 자연스럽게 다룹니다. 다만 파일에 저장하거나 네트워크로 보낼 때는 바이트(bytes)로 바꿔야 하는데, 이 변환이 encode()decode()입니다.

b = "한글".encode("utf-8")
print(b)                  # b'\xed\x95\x9c\xea\xb8\x80'
print(b.decode("utf-8"))  # 한글
print(len("한글".encode("utf-8")))  # 6  (한글 한 글자 = UTF-8에서 3바이트)

💡 한 줄 정리 — 사람이 읽는 글자는 str(유니코드), 컴퓨터가 저장·전송하는 형태는 bytes. 거의 모든 상황에서 인코딩은 utf-8을 쓰면 됩니다.

문자열은 ① 따옴표로 만들고 ② 인덱싱·슬라이싱으로 자르며 ③ 메서드로 다듬고 ④ f-string으로 모양을 잡고 ⑤ encode/decode로 바이트와 오간다 — 이 다섯 가지가 문자열의 전부입니다.

마무리 & 연습문제 (정답 포함)

직접 손으로 쳐 보며 익혀 보세요. 머리로 아는 것과 손이 아는 것은 다릅니다.

# 문제 1) 이메일에서 아이디(@ 앞부분)만 뽑아내기
email = "hello@python.org"
print(email.split("@")[0])        # hello

# 문제 2) 이름을 입력받아 "OOO님 환영합니다" 출력하기
name = input("이름: ")
print(f"{name}님 환영합니다")

# 문제 3) 문장을 거꾸로 뒤집어 출력하기
text = "stressed"
print(text[::-1])                 # desserts

더 공부할 거리

다음 편 예고 — 4편 · 자료구조(리스트)
여러 개의 값을 한 곳에 담는 리스트(list)를 배웁니다. 추가·삭제·정렬부터 슬라이싱 응용까지, 파이썬에서 가장 많이 쓰는 자료구조를 정복합니다.