1 문자열이란 무엇인가 - 진짜 핵심 이해
→ 글자가 순서대로 나열된 데이터
→ 파이썬에서는 문자열도 시퀀스 자료형이라서 인덱스와 슬라이싱이 가능함
→ 문자열은 불변이기 때문에 수정되는 것처럼 보여도 새 문자열이 만들어짐
2 문자열 다룰 때 가장 중요한 사고방식
→ 먼저 전체 문자열을 관찰함
→ 관찰한 후, 기준을 잡아서 split, 인덱스, 정규식 등으로 조각냄
→ 조각난 조각에서 필요한 조각만 선택함
→ 선택한 조각을 정리/변환/필터링함
→ 새로운 문자열로 재조립함
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 문자열 심화뿐만 아니라 다른 프로그래밍 언어에 대해 알고 싶은 분들은 아래 사이트에 접속하여 원하는 링크에 접속하기
'파이썬 > 변수와 데이터 타입' 카테고리의 다른 글
| 파이썬 None 완벽 정리 - None vs 빈 값 차이, is 비교, 함수 반환까지 한 번에 끝내기 (0) | 2025.12.04 |
|---|---|
| 파이썬 Boolean, 조건문 완전 정리 - True/False, 비교/논리 연산, in, None, 단축 평가까지 한 번에 이해하기 (0) | 2025.11.30 |
| 파이썬 형변환 완벽 가이드 : 타입 확인, 숫자 변환, 예외 처리, 자주 하는 실수까지 한 번에 정리 (0) | 2025.11.19 |
| 처음 배우는 파이썬 데이터 타입 완전 정복 - 7종 기본 타입부터 가변 vs 불변, 형 변환, 비교/연산 주의사항까지 (0) | 2025.11.04 |
| 파이썬 변수 완전정복 : 선언부터 재할당, 삭제, 실수까지 초보 100% 이해 (0) | 2025.10.29 |