파이썬 교재 · 4편 / 27편

파이썬 문자열 다루기

슬라이싱·검색·치환·split/join — 입문자가 매일 쓰는 6가지 패턴.

입문읽는 시간 7분2026-05-13
파이썬 REPL 에서 슬라이싱·replace·split 을 실행한 결과 화면

이메일 도메인만 뽑기, 전화번호에서 하이픈 제거, CSV 한 줄 잘라 필드 분리 — 일주일 안에 누구나 마주칠 작업입니다. 도구는 다 문자열 메서드 6가지 안에 있어요. 정규표현식·외부 라이브러리 없이도 텍스트 잡일 90% 가 해결됩니다. 입문자가 가장 빨리 "실무처럼" 코드를 짜는 분기점이 이 챕터.

4편을 마치면 ① 인덱스·슬라이싱으로 부분 추출 ② in 으로 검색, replace 로 치환 ③ split·join 으로 자르고 합치기 ④ strip·upper·startswith 등 자주 쓰는 메서드 8종을 손에 익힙니다.

슬라이싱 — 인덱스와 범위로 부분 추출

문자열은 글자가 줄지어 있는 배열로 생각하면 됩니다. 0번부터 번호가 붙고, 음수는 뒤에서부터 셉니다.

s = "Hello, Python!"
#    0  1  2  3  4  5  6  7  8  9 10 11 12 13
#                                   -7 -6 -5 -4 -3 -2 -1

s[0]      # 'H'  — 첫 글자
s[-1]     # '!'  — 마지막 글자
s[7:13]   # 'Python'  — 7번부터 12번까지 (13은 미포함)
s[:5]     # 'Hello'   — 처음부터 4번까지
s[7:]     # 'Python!' — 7번부터 끝까지
s[::-1]   # '!nohtyP ,olleH' — 거꾸로 (1편 미션 같은 트릭)

슬라이싱 문법은 [시작:끝:간격]. 끝 인덱스는 포함하지 않음 이 가장 헷갈리는 부분입니다. s[0:5] 가 0,1,2,3,4 번 5글자 — 끝의 5번은 제외. 이걸 알아야 다음 100번을 안 막혀요.

📌 한글도 똑같이 동작합니다

"안녕하세요"[0:2]'안녕'. 파이썬 3 부터 모든 문자열이 유니코드 기본이라 한글·이모지·일본어 모두 한 글자 = 인덱스 1로 셉니다. 파이썬 2 시절의 인코딩 지옥은 사라졌어요.

검색과 치환 — in·find·replace

특정 문자열이 들어있는지 확인하려면 in 키워드. True/False 가 돌아옵니다. 위치까지 알고 싶으면 find, 바꿔치우려면 replace.

email = "[email protected]"

"@" in email              # True — 존재 확인만
email.find("@")           # 6   — 첫 등장 인덱스 (없으면 -1)
email.find("naver")       # -1  — 없음을 의미
email.replace("junai", "naver")  # '[email protected]'

# 도메인만 뽑기 — 슬라이싱 + find 조합
at = email.find("@")
domain = email[at+1:]     # 'junai.ai'

replace 의 함정 — 원본을 바꾸지 않습니다. 새 문자열을 만들어 돌려줄 뿐이에요. 변경된 결과를 쓰려면 email = email.replace(...) 처럼 다시 할당해야 합니다. 문자열은 불변(immutable) — 이 성질이 모든 문자열 메서드의 공통 규칙입니다.

자르고 합치기 — split 과 join

CSV 한 줄을 처리할 때 가장 많이 쓰는 두 짝. split 은 구분자로 잘라 리스트로 만들고, join 은 리스트를 구분자로 이어 문자열로 합칩니다.

row = "준성,30,서울,개발자"

fields = row.split(",")
# ['준성', '30', '서울', '개발자']  — 리스트로 4 조각

len(fields)     # 4
fields[0]       # '준성'
fields[2]       # '서울'

# 다시 합치기 (구분자만 바꿔서)
" | ".join(fields)
# '준성 | 30 | 서울 | 개발자'

주의 — "구분자".join(리스트) 순서가 거꾸로 같지만, "이 구분자로 리스트 사이를 이어라" 라고 읽으면 자연스럽습니다. 리스트.join(",") 이 아니에요. 파이썬에서 이 순서가 처음엔 어색하지만, 한 번 익으면 다른 언어가 답답하게 느껴집니다.

# 전화번호 하이픈 제거
phone = "010-1234-5678"
"".join(phone.split("-"))   # '01012345678'
# 또는 더 짧게
phone.replace("-", "")       # '01012345678'

자주 쓰는 메서드 8종 — 한 표로

메서드하는 일예시
upper()대문자"hi".upper()'HI'
lower()소문자"HI".lower()'hi'
strip()양끝 공백 제거" hi ".strip()'hi'
startswith()시작 일치 확인"hello".startswith("he")True
endswith()끝 일치 확인"a.png".endswith(".png")True
count()등장 횟수"banana".count("a")3
isdigit()전부 숫자인가"123".isdigit()True
title()단어 첫 글자 대문자"hello world".title()'Hello World'
⚠️ strip 의 미묘함. strip("abc") 는 양끝에서 abc 중 어떤 글자든 다 빼라 는 의미지 "abc" 라는 단어를 빼라가 아닙니다. "abcXYZabc".strip("abc") = 'XYZ'. 자주 헷갈려요.

마무리 — 메서드 체이닝 한 줄로 잡일 끝

위 메서드들은 결과가 모두 문자열이라 점(.)으로 계속 이을 수 있습니다. 이걸 메서드 체이닝이라 부르고, 한 줄에 여러 작업을 압축할 때 씁니다.

# 사용자 입력 정제: 공백 제거 → 소문자 → @ 앞부분만
user = "  [email protected]  "
clean_id = user.strip().lower().split("@")[0]
# 'jspark'

읽는 순서대로 동작이 일어납니다. "양끝 공백을 떼고 → 전체 소문자로 → @ 로 잘라 → 첫 조각". 입문자 한 달이면 이 정도 한 줄은 자연스럽게 짭니다.

다음 미션 — REPL 에서: ① 본인 이메일 주소에서 도메인만 추출 ② "2026-05-13" 에서 연·월·일을 따로 변수에 분리 (힌트: split) ③ 파일명 "report.final.v2.pdf" 에서 확장자만 (힌트: rsplit 또는 마지막 점 위치 find).

다음 편 미리보기

5편 — "파이썬 리스트": 여러 값을 한 변수에 담는 첫 번째 자료구조. 추가·삭제·정렬·인덱스·슬라이싱이 문자열과 형제처럼 닮았습니다.

📚 27편 파이썬 교재 시리즈 — 4/27편
← 3편 "변수와 자료형" · 다음: 5편 "리스트 사용법"

© 2026 주나이테크(주) @JUNAITECH