📚 「파이썬 완전 정복」 시리즈 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)를 배웁니다. 추가·삭제·정렬부터 슬라이싱 응용까지, 파이썬에서 가장 많이 쓰는 자료구조를 정복합니다.
'AI > Coding' 카테고리의 다른 글
| 파이썬 입문 2편 — 숫자형 완전 정복: 정수·실수, 두 가지 나눗셈과 부동소수점 오차까지 (0) | 2026.06.11 |
|---|---|
| 파이썬 입문 1편 — 프로그래밍이 처음이어도 괜찮습니다: 설치부터 첫 코드, 변수·자료형까지 (0) | 2026.06.10 |
| 코딩의 덧셈·나눗셈·몫·나머지 완전 기초: 초보자를 위한 산술 연산자 설명 (0) | 2026.06.09 |