12차시: 문자열 처리 학습 패키지

안녕하세요! 이번 시간에는 파이썬에서 텍스트 데이터를 다루는 핵심, 문자열(String) 처리에 대해 집중적으로 학습해 보겠습니다. 문자열을 자르고, 붙이고, 검색하고, 원하는 형태로 바꾸는 다양한 기술들을 예제 코드를 통해 익혀보세요!

1. 파이썬 예제 코드: 문자열 처리

1.1. 기초 파이썬 예시 코드 (5개)

기초 예제는 문자열을 만들고, 길이를 재거나, 특정 문자에 접근하는 가장 기본적인 방법을 다룹니다.

1. 문자열 생성과 인덱싱

# 작은따옴표, 큰따옴표, 세 개짜리 따옴표 모두 사용 가능합니다.

s1 = 'Hello'
s2 = "Python"
s3 = """이것은
여러 줄에 걸친
문자열입니다."""

print(s1)
print("s2의 첫 번째 글자:", s2[0])    # 'P'
print("s2의 마지막 글자:", s2[-1])   # 'n'

2. 문자열 연결(+)과 반복(*)

first = "파이썬은 "
second = "재미있다!"

# 문자열 연결
sentence = first + second
print(sentence)

# 문자열 반복
laugh = "하" * 5
print(laugh)

3. 문자열 길이 구하기 (len())

# len() 함수는 공백을 포함한 전체 문자 수를 반환합니다.

text = "안녕하세요, 인수샘입니다."
print(f"문자열 길이: {len(text)}")

4. 문자열 슬라이싱 (Slicing)

# [시작:끝] 형식을 사용하여 문자열의 일부분을 추출합니다.

jumin = "990101-1234567"
gender = jumin[7] # 성별 구분 숫자
birthday = jumin[:6] # 생년월일 앞 6자리

print("생년월일:", birthday)
print("성별 코드:", gender)

5. 대소문자 변환 (upper, lower)

word = "Python is Good"
print("대문자로:", word.upper())
print("소문자로:", word.lower())

1.2. 응용 파이썬 예시 코드 (5개)

응용 예제는 문자열을 쪼개고 합치거나, 공백을 제거하는 등 실질적인 데이터 정제 방법을 다룹니다.

1. 문자열 나누기 (.split())

# 특정 구분자를 기준으로 문자열을 리스트로 나눕니다.

data = "홍길동,구운몽,인수샘"
names = data.split(",") # 쉼표를 기준으로 나눔
print(names)

address = "서울시 강남구 역삼동"
parts = address.split() # 공백을 기준으로 나눔
print(parts)

2. 문자열 바꾸기 (.replace())

# 특정 문자열을 찾아 다른 문자열로 변경합니다.

sentence = "I like Java. Java is fun."
new_sentence = sentence.replace("Java", "Python")
print(new_sentence)

3. 공백 제거하기 (.strip())

# 문자열 양옆의 불필요한 공백이나 줄바꿈을 제거합니다.

user_input = "   인수샘   "
print(f"원본: '{user_input}'")
print(f"제거: '{user_input.strip()}'")

4. 문자열 포매팅 (f-string)

# 변수를 문자열 안에 직관적으로 삽입합니다.

name = "홍길동"
age = 25
print(f"제 이름은 {name}이고, 나이는 {age}세입니다.")

5. 문자열 개수 세기 (.count())

# 특정 문자나 단어가 몇 번 등장하는지 확인합니다.

poem = "동해물과 백두산이 마르고 닳도록"
print("백두산 등장 횟수:", poem.count("백두산"))

1.3. 심화 파이썬 예시 코드 (4개)

심화 예제는 문자열 검색, 검증, 고급 결합 기법 등을 다룹니다.

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

# 리스트의 요소들을 하나의 문자열로 합칩니다.

words = ["Life", "is", "too", "short"]

# " " (공백)을 구분자로 하여 합치기
sentence = " ".join(words)
print(sentence)

# "-"을 구분자로 하여 합치기
date_parts = ["2026", "03", "21"]
date_string = "-".join(date_parts)
print(date_string)

2. 위치 찾기 (.find() vs .index())

# 특정 부분 문자열이 시작되는 첫 번째 인덱스를 찾습니다.

text = "apple, banana"

# .find(): 찾는 문자열이 없으면 -1을 반환합니다.
print("banana의 위치:", text.find("banana"))
print("orange의 위치:", text.find("orange")) # -1

# .index(): 찾는 문자열이 없으면 ValueError 오류를 발생시킵니다.
print("apple의 위치:", text.index("apple"))
# print(text.index("orange")) # 이 코드는 오류를 발생시킴

3. 시작/끝 문자열 확인 (.startswith(), .endswith())

# 파일 확장자를 확인하거나, 특정 프로토콜로 시작하는지 검사할 때 유용합니다.

filename = "report.pdf"
url = "https://www.google.com"

if filename.endswith(".pdf"):
    print("PDF 파일입니다.")

if url.startswith("https://"):
    print("안전한 HTTPS 프로토콜입니다.")

4. 문자열 구성 확인 (.isdigit(), .isalpha())

# 문자열이 숫자로만 혹은 문자로만 이루어져 있는지 검사합니다.

s1 = "12345"
s2 = "Python"

print(f"'{s1}'는 숫자입니까? {s1.isdigit()}")
print(f"'{s2}'는 문자로만 되어 있습니까? {s2.isalpha()}")