파이썬/변수와 데이터 타입

파이썬 문자열 완전정복 : split, join, replace, 정규표현식, 한글 깨짐, 디버깅까지 이것만 보면 끝!

creator6556 2025. 11. 27. 13:26

1 문자열이란 무엇인가 - 진짜 핵심 이해

글자가 순서대로 나열된 데이터

→ 파이썬에서는 문자열도 시퀀스 자료형이라서 인덱스와 슬라이싱이 가능함

→ 문자열은 불변이기 때문에 수정되는 것처럼 보여도 새 문자열이 만들어짐


2 문자열 다룰 때 가장 중요한 사고방식

→ 먼저 전체 문자열을 관찰함

→ 관찰한 후, 기준을 잡아서 split, 인덱스, 정규식 등으로 조각냄

→ 조각난 조각에서 필요한 조각만 선택함

→ 선택한 조각을 정리/변환/필터링함

→ 새로운 문자열로 재조립함


728x90

3 문자열 인덱싱 & 슬라이싱

1) 인덱싱

특정 문자 1개를 가져옴

→ 범위를 벗어나면 오류가 발생함

→ 위치가 확실할 때 사용함


2) 슬라이싱

특정 구간의 문자열을 가져옴

→ 범위가 넘어가도 안전하며, 빈 문자열이 가능함

→ 범위가 불확실할 때 사용함


4 문자열 기본 변환 & 조합

f-string문자열과 변수를 결합하며, 여러 값을 넣음

→ .format()은 여러 값을 넣음

'구분자'.join(리스트) 형식에 맞춰서 작성하면 리스트 안의 문자열 여러 개를 합칠 수 있음

1-1 코드

fruits = ['사과', '바나나']
result = ', '.join(fruits)
print(result)

1-1 결과


5 문자열 필터링 & 조건부 변환 (실전 핵심)

2-1 코드 : 필터링(원하는 문자만 남기기)

text = 'hello123'
digits = ''.join(ch for ch in text if ch.isdigit())  # 숫자만
print(digits)

2-1 결과

2-2 코드 : 조건부 변환(조건이 맞으면 바꾸기)

text = 'hello 123'
res = ''.join('_' if ch == ' ' else ch for ch in text)
print(res)

2-2 결과

2-3 코드 : 공백 정리 올인원

text = 'hello     123'
clean = ' '.join(text.split())   # 연속 공백·탭·줄바꿈 -> 공백 1개로
print(clean)

2-3 결과


6 문자열 비교 & 정렬 규칙

→ 문자열 비교는 겉모양이 아니라 유니코드 번호를 왼쪽부터 순서대로 비교

3-1 코드 : 사람이 기대하는 '대소문자 무시 정렬'

print(sorted(['Apple', 'ant'], key=str.lower))

3-1 결과

3-2 코드 : 문자열 숫자를 '진짜 숫자처럼' 정렬

print(sorted(['2', '10', '1'], key=int))

3-2 결과


7 정규표현식(Regex) - 실전에서 꼭 필요한 최소 기능

목적 패턴
숫자 찾기 \d+
영문자 [A-Za-z]|
한글 [가-힣]+
이메일 [A-Za-z0-9._+-]+@[A-Za-z0-9-]+\.[A-Za-z]{2,}
전화번호 010-?\d{4}-?\d{4}
URL https?://[^\s]+
다중 공백 \s+
HTML태그 제거 <[^>]*>
목적 함수
패턴 있는지 확인 re.search
결과를 전부 리스트로 추출 re.findall
패턴을 다른 문자열로 치환 re.sub
여러 구분자로 문자열 나누기 re.split

8 문자열 인코딩 - 한글 깨짐의 원리

유니코드문자에 번호를 정해놓은 표

UTF-8그 번호를 저장하는 방식이며, 저장할 때 인코딩과 읽을 때 인코딩이 다르면 깨짐

저장할 때랑 읽을 때의 인코딩이 같으면 한글 깨짐은 거의 해결할 수 있음

→ 문자열 길이와 바이트 길이는 다름


9 문자열 실수 & 디버깅 루틴 (실전에서 가장 중요한 부분)

1) 가장 많이 발생하는 실수 TOP 7

오류 원인 설명 해결
문자열 + 숫자 타입 불일치 f-string
None 결합 return 없음 return으로 반환
보이지 않는 공백/개행 눈에 안 보임 strip / replace / repr
인덱스 범위 길이 모름 len 체크 또는 슬라이싱
백슬래시 해석 \n 등이 명령으로 동작 raw string
문자열 불변성 수정되지 않음 재할당 필요
+= 반복 성능 약화 join 사용

2) 디버깅 체크리스트 6개

→ type()  -> len() -> repr()

→ 숫자 / None 섞였는지 확인하기

→ replace /strip 후 변수에 다시 저장했는지 확인하기

→ 문자열 반복이면 join을 썼는지 확인하기


Python 문자열 심화에 대해 더 상세한 설명을 원하는 분들은 아래 사이트에 접속하기

Python 문자열 심화


Python 문자열 심화뿐만 아니라 다른 프로그래밍 언어에 대해 알고 싶은 분들은 아래 사이트에 접속하여 원하는 링크에 접속하기

프로그래밍 언어 정리 모음 

728x90