파이썬 문자열(String) 완벽 정리: 자르기, 합치기, 치환, 포맷팅 한 번에 커버 이미지
개발자

파이썬 문자열(String) 완벽 정리: 자르기, 합치기, 치환, 포맷팅 한 번에

파이썬 문자열 사용법을 한 곳에 모았습니다. 자르기(split·슬라이싱), 합치기(join), 치환(replace), f-string 포맷팅, 탐색, 숫자 변환까지. 모든 예제는 복사해서 바로 실행할 수 있습니다.

코딩하는 상인·· 읽기 7출처 없음

파이썬에서 문자열은 거의 모든 코드에 등장합니다. 그만큼 검색도 많죠. "파이썬 문자열 자르기", "문자열 합치기", "문자열 치환", "f-string 포맷팅"… 매번 비슷한 걸 찾게 됩니다.

이 글은 파이썬 문자열의 핵심 사용법을 한 곳에 모았습니다. 자르기·합치기·치환·탐색·포맷팅까지, 전부 복사해서 바로 쓸 수 있게 정리했습니다. 북마크해두고 필요할 때마다 꺼내 쓰세요.

동작 환경: Python 3.6+ (f-string은 3.6부터 사용 가능)


문자열 기본과 인덱싱

s = "hello"

len(s)         # 5 — 길이
s[0]           # 'h' — 첫 글자
s[-1]          # 'o' — 마지막 글자
s[1:4]         # 'ell' — 슬라이싱 (인덱스 1~3)

# 문자열은 수정 불가(immutable) — 글자 하나만 바꾸려면 새로 만들어야 함
s[0] = "H"     # ❌ TypeError!
s = "H" + s[1:]   # 'Hello' — 이렇게 새 문자열 생성

문자열이 **불변(immutable)**이라는 점이 핵심입니다. 모든 "수정" 메서드는 원본을 바꾸지 않고 새 문자열을 반환합니다.


문자열 자르기 (split, 슬라이싱)

가장 검색량이 높은 부분입니다.

s = "apple,banana,cherry"

# 구분자로 자르기
s.split(",")           # ['apple', 'banana', 'cherry']
"a b c".split()        # ['a', 'b', 'c'] (공백 기준, 기본값)
s.split(",", 1)        # ['apple', 'banana,cherry'] (최대 1번만 분리)

# 슬라이싱으로 자르기
text = "2024-01-15"
text[:4]               # '2024' — 연도
text[5:7]              # '01' — 월

# 줄 단위로 자르기
"line1\nline2".splitlines()    # ['line1', 'line2']

문자열 합치기 (join)

리스트를 하나의 문자열로 합칠 때는 join을 씁니다. +로 반복해서 잇는 것보다 훨씬 빠릅니다.

words = ["apple", "banana", "cherry"]

",".join(words)        # 'apple,banana,cherry'
" ".join(words)        # 'apple banana cherry'
"".join(words)         # 'applebananacherry'

# 숫자 리스트는 문자열로 변환 후 합치기
nums = [1, 2, 3]
"-".join(map(str, nums))   # '1-2-3'

# 단순 연결
"hello" + " " + "world"    # 'hello world'
"ab" * 3                   # 'ababab' — 반복

문자열 치환 (replace)

s = "hello world"

s.replace("o", "0")        # 'hell0 w0rld' — 모든 o를 0으로
s.replace("o", "0", 1)     # 'hell0 world' — 첫 번째만 치환
s.replace(" ", "")         # 'helloworld' — 공백 제거

# 여러 문자를 한 번에 치환 (translate)
table = str.maketrans("abc", "xyz")
"aabbcc".translate(table)  # 'xxyyzz'

대소문자 변환

s = "Hello World"

s.upper()          # 'HELLO WORLD'
s.lower()          # 'hello world'
s.title()          # 'Hello World' — 각 단어 첫 글자 대문자
s.capitalize()     # 'Hello world' — 첫 글자만 대문자
s.swapcase()       # 'hELLO wORLD' — 대소문자 반전

공백 / 특정 문자 제거 (strip)

s = "  hello  "

s.strip()          # 'hello' — 양쪽 공백 제거
s.lstrip()         # 'hello  ' — 왼쪽만
s.rstrip()         # '  hello' — 오른쪽만

# 특정 문자 제거
"###hello###".strip("#")   # 'hello'

# 입력값 끝의 개행 제거에 자주 사용
line = input().rstrip()

문자열 탐색 (find, index, in, count)

s = "hello world"

"world" in s       # True — 포함 여부
s.find("o")        # 4 — 첫 번째 위치 (없으면 -1)
s.rfind("o")       # 7 — 마지막 위치
s.index("o")       # 4 — find와 같지만 없으면 에러
s.count("o")       # 2 — 개수
s.startswith("he") # True — 시작 문자열 확인
s.endswith("ld")   # True — 끝 문자열 확인

find()는 없으면 -1을 반환하고, index()는 없으면 ValueError를 냅니다. 안전하게 쓰려면 find() 또는 in으로 먼저 확인하세요.


문자열 포맷팅 (f-string)

Python 3.6+에서는 f-string이 가장 깔끔하고 빠른 방법입니다.

name, score = "Kim", 95.6789

f"{name}님의 점수는 {score}점"      # 'Kim님의 점수는 95.6789점'
f"{score:.2f}"                     # '95.68' — 소수점 2자리
f"{1000000:,}"                     # '1,000,000' — 천 단위 콤마
f"{42:05d}"                        # '00042' — 0으로 채워 5자리
f"{0.25:.1%}"                      # '25.0%' — 퍼센트
f"{name:>10}"                      # '       Kim' — 오른쪽 정렬(10칸)
f"{name:<10}"                      # 'Kim       ' — 왼쪽 정렬
f"{name:^10}"                      # '   Kim    ' — 가운데 정렬
f"{name=}"                         # "name='Kim'" — 디버깅용 (3.8+)

# 구버전 호환 방식
"{}님 {}점".format(name, score)

문자열 ↔ 숫자 / 리스트 변환

# 문자열 → 숫자
int("123")             # 123
float("3.14")          # 3.14
int("ff", 16)          # 255 — 16진수 문자열

# 숫자 → 문자열
str(123)               # '123'

# 문자열 → 리스트
list("abc")            # ['a', 'b', 'c']

# 문자열 뒤집기
"hello"[::-1]          # 'olleh'

# 각 글자 빈도 세기
from collections import Counter
Counter("banana")      # {'a': 3, 'n': 2, 'b': 1}

유용한 검사 메서드

"12345".isdigit()      # True — 숫자로만 구성?
"abc".isalpha()        # True — 알파벳으로만?
"abc123".isalnum()     # True — 알파벳+숫자?
"   ".isspace()        # True — 공백으로만?
"Hello".islower()      # False

자주 묻는 질문

Q. 문자열의 특정 글자만 바꾸려면? 문자열은 불변이라 s[0] = "x"처럼 직접 수정할 수 없습니다. 슬라이싱으로 새 문자열을 만들거나("x" + s[1:]), replace()를 쓰세요.

Q. split()과 splitlines()의 차이는? split()은 지정한 구분자(기본 공백)로 자르고, splitlines()는 줄바꿈 문자를 기준으로 자릅니다. 여러 줄 텍스트를 줄 단위로 다룰 땐 splitlines()가 편합니다.

Q. 문자열을 합칠 때 + 와 join 중 뭐가 빠른가요? 많은 문자열을 합칠 때는 join이 훨씬 빠릅니다. +는 합칠 때마다 새 문자열을 만들기 때문에 반복이 많으면 느려집니다.


마무리

파이썬 문자열의 핵심은 자르기는 split/슬라이싱, 합치기는 join, 치환은 replace, 포맷팅은 f-string입니다. 그리고 문자열은 불변이라 모든 메서드가 새 문자열을 반환한다는 점만 기억하면 대부분의 함정을 피할 수 있습니다.

특히 f-string은 가독성과 속도 모두 뛰어나므로, 포맷팅이 필요할 때 가장 먼저 떠올리면 됩니다. 필요할 때마다 이 글을 다시 펼쳐 해당 섹션을 복사해 쓰세요.

함께 보면 좋은 글: [파이썬 리스트 완벽 정리], [파이썬 딕셔너리 완벽 정리]

함께 보면 좋은 글