파이썬 왕초보 탈출기 #3: 텍스트 데이터 처리 완벽 입문

1. 문자열(String)이란 무엇입니까?
문자열(String)은 간단히 말해 '글자들의 연속된 순서'입니다. 'Hello', '파이썬은 재미있습니다!', 'User ID: abc123' 와 같이 우리가 사용하는 단어, 문장, 심지어 기호나 숫자까지 포함된 텍스트 데이터를 나타낼 때 사용됩니다.
중요한 점은 문자열이 '순서(Sequence)'를 가지고 있다는 것입니다. 즉, 문자열을 구성하는 각 글자들은 정해진 순서대로 배열되어 있습니다. 이 특징 덕분에 우리는 문자열 내의 특정 위치에 있는 글자에 접근하거나, 문자열의 일부를 잘라낼 수 있습니다.
2025.04.06 - [Programming/파이썬] - 파이썬 왕초보 탈출기 #2: 숫자형(int, float) 완벽 이해 및 활용법
2. 파이썬에서 문자열 생성하기: 따옴표의 마법
파이썬에서는 문자열을 생성하는 방법이 매우 유연합니다. 다음 세 가지 방법 중 편한 것을 사용하면 됩니다.
- 작은따옴표 (' ') 사용:
my_string1 = '안녕하세요, 파이썬!'
print(my_string1)
- 큰따옴표 (" ") 사용:
my_string2 = "파이썬 프로그래밍은 즐겁습니다."
print(my_string2)
작은따옴표와 큰따옴표는 기능적으로 동일합니다. 다만, 문자열 내부에 특정 따옴표를 포함해야 할 때 유용하게 구분하여 사용할 수 있습니다.
sentence1 = "그는 '안녕하세요!'라고 말했습니다." # 큰따옴표 안에 작은따옴표 사용
sentence2 = '그녀는 "반가워요."라고 답했습니다.' # 작은따옴표 안에 큰따옴표 사용
print(sentence1)
print(sentence2)
- 삼중따옴표 (''' ''' 또는 """ """) 사용: 여러 줄에 걸친 문자열을 만들거나, 문자열 내에 작은따옴표와 큰따옴표를 자유롭게 포함하고 싶을 때 사용합니다.
multi_line_string = """이것은
여러 줄에 걸친
문자열입니다.
작은따옴표(')와 큰따옴표(")도 자유롭게 사용 가능합니다.
"""
print(multi_line_string)
삼중따옴표는 주석 대신 함수나 클래스에 대한 설명(Docstring)을 작성하는 데에도 널리 사용됩니다.
문자열을 생성한 후 변수에 할당하고, type() 함수로 타입을 확인해 보면 <class 'str'>이라고 나오는 것을 볼 수 있습니다.
greeting = "Welcome!"
print(type(greeting)) # 출력: <class 'str'>
3. 문자열 기본 연산: 더하고 곱하기
문자열도 숫자처럼 간단한 연산을 할 수 있습니다.
- 문자열 결합 (Concatenation): + 연산자
두 개 이상의 문자열을 하나로 이어 붙일 때 사용합니다.
first_name = "길동"
last_name = "홍"
full_name = last_name + first_name # 문자열 이어붙이기
print(full_name) # 출력: 홍길동
greeting_start = "Hello"
greeting_end = " World"
message = greeting_start + "," + greeting_end + "!" # 여러 개 이어붙이기
print(message) # 출력: Hello, World!
- [주의!] 문자열은 문자열끼리만 + 연산이 가능합니다. 숫자를 문자열에 이어 붙이려면, 숫자를 문자열로 변환하는 str() 함수를 사용해야 합니다.
age = 30
# print("나이: " + age) # TypeError 발생! 문자열과 숫자는 직접 더할 수 없음
print("나이: " + str(age)) # 출력: 나이: 30 (age를 문자열로 변환 후 결합)
- 문자열 반복 (Repetition): * 연산자
문자열을 정해진 횟수만큼 반복하여 새로운 문자열을 만듭니다.
echo = "메아리! "
repeated_echo = echo * 3 # "메아리! "를 3번 반복
print(repeated_echo) # 출력: 메아리! 메아리! 메아리!
separator = "-" * 20 # "-" 문자를 20번 반복
print(separator) # 출력: --------------------
4. 문자열 인덱싱(Indexing): 콕 집어 한 글자 가져오기
문자열은 순서가 있는 글자들의 모음이라고 했습니다. 인덱싱(Indexing)은 이 순서(위치 번호, 인덱스)를 이용해 문자열 내의 특정 한 글자에 접근하는 방법입니다.
- 주의: 파이썬의 인덱스는 0부터 시작합니다! 즉, 첫 번째 글자의 인덱스는 0입니다.
- 대괄호 [] 안에 원하는 위치의 인덱스 번호를 넣어 사용합니다.
my_str = "Python"
# P y t h o n
# 0 1 2 3 4 5 (양수 인덱스)
#-6 -5 -4 -3 -2 -1 (음수 인덱스)
print(my_str[0]) # 출력: P (첫 번째 글자)
print(my_str[1]) # 출력: y (두 번째 글자)
print(my_str[5]) # 출력: n (여섯 번째 글자, 마지막 글자)
# 음수 인덱스도 사용할 수 있습니다. -1은 마지막 글자를 의미합니다.
print(my_str[-1]) # 출력: n (마지막 글자)
print(my_str[-2]) # 출력: o (뒤에서 두 번째 글자)
print(my_str[-6]) # 출력: P (뒤에서 여섯 번째 글자, 첫 번째 글자)
- [주의!] 문자열의 길이를 벗어나는 인덱스에 접근하려고 하면 IndexError 오류가 발생합니다.
# print(my_str[6]) # IndexError: string index out of range (인덱스 6은 없음)
5. 문자열 슬라이싱(Slicing): 원하는 부분만 잘라내기
슬라이싱(Slicing)은 문자열의 일부(부분 문자열, Substring)를 잘라내어 새로운 문자열을 만드는 방법입니다.
[시작인덱스:끝인덱스:간격] 형태로 사용합니다.
- 시작인덱스: 잘라내기 시작할 위치 (포함됨)
- 끝인덱스: 잘라내기를 끝낼 위치 (포함되지 않음! 그 바로 앞까지 잘림)
- 간격(step): 몇 글자씩 건너뛰며 잘라낼지 (생략하면 1, 즉 모든 글자)
my_str = "Hello, World!"
# H e l l o , W o r l d !
# 0 1 2 3 4 5 6 7 8 9 10 11 12 (양수 인덱스)
# 기본 슬라이싱
print(my_str[0:5]) # 인덱스 0부터 5 직전(4)까지 -> 출력: Hello
print(my_str[7:12]) # 인덱스 7부터 12 직전(11)까지 -> 출력: World
# 시작 인덱스 생략: 처음부터 (인덱스 0)
print(my_str[:5]) # 출력: Hello
# 끝 인덱스 생략: 끝까지
print(my_str[7:]) # 출력: World!
# 전체 문자열 (복사본 생성)
print(my_str[:]) # 출력: Hello, World!
# 간격(step) 사용
print(my_str[::2]) # 처음부터 끝까지 2칸 간격으로 -> 출력: Hlo ol!
# 음수 인덱스 활용
print(my_str[-6:-1]) # 뒤에서 6번째('W')부터 뒤에서 1번째('!') 직전까지 -> 출력: World
# 문자열 뒤집기 (간격을 -1로)
print(my_str[::-1]) # 출력: !dlroW ,olleH
6. 문자열 길이 구하기: len() 함수
문자열이 총 몇 개의 글자로 이루어져 있는지 알고 싶을 때는 내장 함수 len()을 사용합니다.
message = "파이썬 프로그래밍"
length = len(message)
print(f"'{message}'의 길이는 {length}입니다.") # 출력: '파이썬 프로그래밍'의 길이는 9입니다. (공백 포함)
empty_string = ""
print(len(empty_string)) # 출력: 0
팁 & 흔히 겪는 문제점
1. 따옴표의 지혜로운 사용: 문자열 내부에 포함될 따옴표 종류에 따라 바깥쪽 따옴표를 선택하면 편리합니다. 여러 줄 문자열이나 복잡한 따옴표 사용 시에는 삼중따옴표가 유용합니다.
2. 문자열은 불변(Immutable)입니다! (★매우 중요★): 일단 문자열이 생성되면, 그 내용을 직접 수정할 수는 없습니다. 예를 들어 my_str[0] = 'J' 와 같이 특정 인덱스의 글자를 바꾸려고 하면 TypeError가 발생합니다.
my_str = "Python"
# my_str[0] = "J" # TypeError: 'str' object does not support item assignment
문자열의 내용을 변경하고 싶다면, 슬라이싱, 결합(+) 등을 이용해 새로운 문자열을 만들어야 합니다.
my_str = "Python"
new_str = "J" + my_str[1:] # 'J'와 기존 문자열의 두 번째 글자부터 끝까지를 결합
print(new_str) # 출력: Jython
print(my_str) # 출력: Python (원래 문자열은 변하지 않음)
이 '불변성'은 파이썬 문자열의 중요한 특징이므로 꼭 기억해야 합니다.
3. TypeError: 문자열과 다른 타입의 연산: 문자열과 숫자를 +로 직접 더하려고 할 때 발생하는 TypeError를 주의해야 합니다. 다른 타입의 데이터를 문자열에 포함시키려면 항상 str() 함수를 사용하여 문자열로 변환한 후 결합해야 합니다.
4. IndexError: 존재하지 않는 인덱스 접근: 문자열의 길이를 벗어나는 인덱스를 사용하면 IndexError가 발생합니다. 인덱싱이나 슬라이싱을 할 때는 항상 유효한 인덱스 범위 내에서 접근해야 하며, 필요하다면 len() 함수로 길이를 먼저 확인하는 것이 안전합니다.
2025.04.05 - [Programming/파이썬] - 파이썬 왕초보 탈출기 #1: 변수(Variables), 데이터 마법상자
'Programming > 파이썬' 카테고리의 다른 글
파이썬 왕초보 탈출기 #4: 문자열(str) 다루기 - 인덱싱, 슬라이싱, 필수 메소드 기초 (0) | 2025.04.08 |
---|---|
파이썬 왕초보 탈출기 #2: 숫자형(int, float) 완벽 이해 및 활용법 (0) | 2025.04.06 |
파이썬 왕초보 탈출기 #1: 변수(Variables), 데이터 마법상자 (0) | 2025.04.05 |
초보자도 쉽게! 파이썬 설치하기 - 실패 없이 따라하는 자세한 가이드 및 주의사항 (0) | 2025.04.01 |