2. 문자열 (String)

파이썬 3에서 문자열은 전 세계의 모든 언어를 표현할 수 있는 유니코드(Unicode) 기반으로 동작합니다. 텍스트 데이터를 처리하는 가장 핵심적인 자료형이며, 앞서 배웠듯 한 번 생성되면 내부 문자를 바꿀 수 없는 변경 불가(Immutable) 자료형입니다.

2.1 문자열 생성 방법

문자열은 따옴표(리터럴 표기법)를 사용하거나 내장 함수 str()을 통해 생성할 수 있습니다.

# 1. 인용 기호를 사용한 리터럴 생성
text = "파이썬"
print(type(text)) # <class 'str'>

# 2. 다른 자료형을 문자열로 강제 변환
num_str = str(123.00) 
print(num_str) # "123.0"

2.2 문자열 주요 내장 메서드

문자열 객체는 데이터를 가공하고 꾸미기 위한 수많은 메서드를 기본적으로 내장하고 있습니다. 이때 원본 문자열 객체 자체는 불변이므로, 메서드를 실행하면 항상 변경된 내용이 담긴 “완전히 새로운 문자열” 객체가 반환됩니다.

대소문자 변환

  • upper() / lower(): 모든 문자를 대문자 혹은 소문자로 전부 변환합니다.
  • title(): 띄어쓰기를 기준으로 각 단어의 첫 글자만 대문자로 변환합니다. (제목 스타일)
  • capitalize(): 문장 전체의 맨 첫 글자만 대문자로 변환합니다.
title = "WONDER WOMEN"
print(title.lower()) # "wonder women"
print(title.title()) # "Wonder Women"

위치 정렬 및 패딩 (채우기)

특정 출력 너비 안에서 글자를 정렬하고 남는 빈 칸을 원하는 문자로 채웁니다.

  • center(너비, 채울문자): 텍스트를 중앙에 배치합니다.
  • ljust(너비, 채울문자): 텍스트를 좌측으로 밀착합니다.
  • rjust(너비, 채울문자): 텍스트를 우측으로 밀착합니다.
word = "안내"
# 10칸의 공간 안에 글자를 가운데 정렬하고 나머지를 '-'로 채움
print(word.center(10, "-")) # "----안내----"

문자 검색 및 출현 횟수 파악

  • count(문자): 문자열 안에 해당 문자가 몇 번 등장하는지 세어줍니다.
  • find(문자): 해당 문자가 있는 첫 번째 인덱스를 찾아 반환합니다. (없으면 -1 반환)
  • index(문자): find와 같지만, 문자를 찾지 못하면 ValueError 에러를 발생시킵니다.
  • startswith(), endswith(): 특정 문자로 시작하거나 끝나는지 검사하여 불리언(True/False) 값을 돌려줍니다.

2.3 문자열 분리와 결합

문자열 데이터를 다룰 때 가장 빈번하게 사용되는 가공 패턴입니다.

문자열 쪼개기 ( split )

기준이 되는 구분자(공백, 쉼표 등)를 바탕으로 문자열을 쪼개어 리스트(List) 형태로 반환합니다.

sentence = "빈 문자열로 분리하고 결합하기"
word_list = sentence.split(" ")
print(word_list) # ['빈', '문자열로', '분리하고', '결합하기']

리스트를 문자열로 합치기 ( join )

split의 반대 동작입니다. 리스트의 수많은 문자열 원소들을 하나로 이어 붙입니다. 호출하는 본체 문자열이 ‘접착제(구분자)’ 역할을 합니다.

# 공백(" ")을 접착제로 사용하여 배열 데이터 합치기
combined = " ".join(word_list)
print(combined) # "빈 문자열로 분리하고 결합하기"

2.4 문자 코딩 변환 (encode와 decode)

통신망으로 데이터를 전송하거나 파일에 기록할 때는, 문자열 텍스트가 아닌 컴퓨터가 즉시 이해할 수 있는 순수 바이트(Bytes) 덩어리로 변환하는 작업이 필수적입니다.

  • 인코딩 (encode): 유니코드 문자열 ➡ 바이트 배열 (bytes 클래스)
  • 디코딩 (decode): 바이트 배열 ➡ 유니코드 문자열 (str 클래스)
s = "파이썬"

# 1. 텍스트를 바이트 단위 구조로 암호화(인코딩)
b_data = s.encode("utf-8")
print(b_data) # b'\xed\x8c\x8c\xec\x9d\xb4\xec\x8d\xac' (한글이 UTF-8 바이트로 치환됨)

# 2. 바이트 구조를 다시 사람이 읽을 수 있는 유니코드로 복호화(디코딩)
text_data = b_data.decode("utf-8")
print(text_data) # "파이썬"
서브목차