파이썬 프로그래밍의 가장 기본적이면서도 강력한 요소인 문자열(String)에 대해 알아보자.
문자열은 웹 개발, 데이터 분석, 인공지능 등 거의 모든 프로그래밍 분야에서 필수적으로 사용된다.
1. 문자열 생성 및 기본 조작
파이썬에서 문자열은 따옴표(')나 큰따옴표(")로 텍스트를 감싸서 생성한다.
# 작은따옴표와 큰따옴표 모두 사용 가능
text1 = 'Hello, Python!'
text2 = "파이썬은 정말 유용하다."
# 문자열 안에 큰따옴표를 쓰고 싶을 땐 작은따옴표로 감싼다.
sentence1 = '그는 "파이썬은 정말 쉬워."라고 말했다.'
# 문자열 안에 작은따옴표를 쓰고 싶을 땐 큰따옴표로 감싼다.
sentence2 = "Python's syntax is very simple."
# 여러 줄의 문자열은 세 개의 따옴표(''' 또는 """)를 사용한다.
multi_line_text = """
이것은
여러 줄로
작성된 문자열이다.
"""
print(text1)
print(text2)
print(multi_line_text)
생성된 문자열을 다루는 주요 방법들은 다음과 같다.
문자열 더하고 곱하기 (연산) : 문자열도 숫자처럼 간단한 연산이 가능하다.
- 더하기 (+): 두 문자열을 이어 붙인다. (Concatenation)
- 곱하기 (*): 문자열을 여러 번 반복한다.
head = "Python"
tail = " is fun!"
# 더하기
full_string = head + tail
print(full_string) # 출력: Python is fun!
# 곱하기
print(head * 3) # 출력: PythonPythonPython
- 문자열 길이 확인 (len()) : 문자열의 총 문자 개수를 반환한다.
print(f"'{text1}'의 길이는 {len(text1)}이다.") # 출력: 'Hello, Python!'의 길이는 14이다.
- 문자 추출 (인덱싱) : 문자열의 특정 위치에 있는 한 글자를 추출한다. 파이썬에서 인덱스(위치)는 0부터 시작한다.
print(f"'{text1}'의 첫 번째 문자: {text1[0]}") # 출력: 'H'
print(f"'{text1}'의 여섯 번째 문자: {text1[5]}") # 출력: ','
- 문자열 일부 추출 (슬라이싱) : 문자열의 특정 범위를 잘라내어 새로운 문자열을 생성한다. [시작_인덱스 : 끝_인덱스_전까지] 형태로 사용한다. 슬라이싱은 데이터에서 필요한 부분만 추출할 때 매우 유용하다.
print(f"'{text1}'에서 0부터 5까지: {text1[0:5]}") # 출력: Hello
print(f"'{text1}'에서 7번째부터 끝까지: {text1[7:]}") # 출력: Python!
print(f"'{text1}'에서 처음부터 6번째 전까지: {text1[:6]}") # 출력: Hello,
print(f"'{text1}' 전체 복사 : {text1[:]}") # 출력: Hello, Python!
# 문자열 뒤집기
# 앞에서부터는 0부터 시작이지만, 맨 마지막에서 시작은 -1에서 시작
print(f"'{text1}' 뒤집기 : {text[::-1]}" # 출력: !nohtyP ,olleH
2. 문자열 메서드
파이썬은 문자열을 효율적으로 다룰 수 있도록 다양한 **메서드(Method)**를 제공한다.
2.1. 대소문자 변환
- lower() : 모든 글자를 소문자로 변환한다.
- upper() : 모든 글자를 대문자로 변환한다.
- capitalize() : 첫 글자만 대문자로, 나머지는 소문자로 변환한다.
example_text = "Python is AMAZING!"
print(f"소문자: {example_text.lower()}") # 출력: python is amazing!
print(f"대문자: {example_text.upper()}") # 출력: PYTHON IS AMAZING!
print(f"첫 글자만 대문자: {example_text.capitalize()}") # 출력: Python is amazing!
2.2. 공백 제거
데이터 처리 시 불필요한 공백을 제거하는 데 유용하다.
- strip() : 문자열 양 끝의 모든 공백(띄어쓰기, 탭, 줄바꿈)을 제거한다.
- lstrip() : 왼쪽(앞) 공백만 제거한다.
- rstrip() : 오른쪽(뒤) 공백만 제거한다.
dirty_text = " 안녕하세요, 파이썬! "
print(f"공백 제거 전: '{dirty_text}'")
print(f"앞뒤 공백 제거: '{dirty_text.strip()}'") # 출력: '안녕하세요, 파이썬!'
print(f"왼쪽 공백 제거: '{dirty_text.lstrip()}'") # 출력: '안녕하세요, 파이썬! '
print(f"오른쪽 공백 제거: '{dirty_text.rstrip()}'") # 출력: ' 안녕하세요, 파이썬!'
2.3. 문자열 찾기 및 변경
- find("찾을 문자열") : 특정 문자열이 처음 등장하는 인덱스(위치)를 반환한다. 찾지 못하면 -1을 반환한다.
- replace("찾을 문자열", "바꿀 문자열") : 문자열 내의 특정 부분을 다른 문자열로 모두 변경한다.
- count("찾을 문자열") : 특정 문자열이 나온 횟수를 반환한다.
sentence = "Hello, Python! Hello, World!"
print(f"'Python'의 위치: {sentence.find('Python')}") # 출력: 7
print(f"'Java'의 위치: {sentence.find('Java')}") # 출력: -1
print(f"Python을 World로 변경: {sentence.replace('Python', 'World')}") # 출력: Hello, World! Hello, World!
print(f"'Hello'가 몇 번 나왔나: {sentence_text.count("Hello")}") # 출력 : 2
3. 문자열 포맷팅 : 변수 값 삽입 및 조합
문자열 안에 변수 값을 동적으로 삽입하거나 원하는 형식으로 조합할 때 문자열 포맷팅을 사용한다.
3.1. 📌 f-string 활용 (권장)
파이썬 3.6부터 도입된 f-string은 가장 직관적이고 강력한 포맷팅 방식이다. 문자열 앞에 f를 붙이고, 중괄호 {} 안에 변수나 파이썬 코드를 직접 넣는다.
name = "구름"
age = 99
greeting_f = f"안녕하세요, {name}님! 나이는 {age}세이다."
print(greeting_f) # 출력: 안녕하세요, 구름님! 나이는 99세이다.
# 계산식도 직접 삽입할 수 있다.
price = 1500
quantity = 3
total = f"상품 가격: {price * quantity}원"
print(total) # 출력: 상품 가격: 4500원
3.2. 📌 .format() 메서드 사용
f-string이 도입되기 전 주로 사용되던 방법이다. 중괄호 {}를 플레이스홀더로 사용하고, format() 메서드의 인자로 값을 전달한다.
greeting_format = "안녕하세요, {}님! 나이는 {}세이다.".format(name, age)
print(greeting_format) # 출력: 안녕하세요, 구름님! 나이는 99세이다.
# 순서를 지정하거나 이름을 붙여서 사용할 수도 있다.
order = "주문 번호: {1}, 상품명: {0}".format("티셔츠", "A123")
print(order) # 출력: 주문 번호: A123, 상품명: 티셔츠
4. 문자열 분리 및 결합 : 텍스트 데이터의 구조화
텍스트 데이터를 처리할 때, 긴 문자열을 특정 기준으로 나누거나, 여러 문자열 조각들을 하나로 합치는 작업이 자주 필요하다.
4.1. 문자열 분리 (split())
특정 구분자(Delimiter)를 기준으로 문자열을 나누어 리스트(list) 형태로 반환한다.
data = "Python is fun,and,powerful"
words_by_space = data.split(" ") # 공백 기준으로 나누기
words_by_comma = data.split(",") # 쉼표 기준으로 나누기
print(f"공백으로 나눈 결과: {words_by_space}") # 출력: ['Python', 'is', 'fun,and,powerful']
print(f"쉼표로 나눈 결과: {words_by_comma}") # 출력: ['Python is fun', 'and', 'powerful']
4.2. 문자열 결합 (join())
리스트에 담긴 여러 문자열들을 특정 구분자를 사용하여 하나의 문자열로 합친다. join() 메서드는 구분자 문자열을 통해 호출된다.
word_list = ["Python", "is", "awesome"]
joined_by_space = " ".join(word_list) # 공백으로 연결
joined_by_hyphen = "-".join(word_list) # 하이픈(-)으로 연결
print(f"공백으로 연결: {joined_by_space}") # 출력: Python is awesome
print(f"하이픈으로 연결: {joined_by_hyphen}") # 출력: Python-is-awesome
5. 문자열 정렬 및 반복 : 출력 형식 제어
문자열을 출력할 때 특정 공간 안에 정렬하거나, 같은 내용을 여러 번 반복해야 할 때 유용한 기능들이다.
5.1. 문자열 정렬
- center(폭) : 문자열을 지정된 폭 안에 중앙 정렬하고, 남는 공간은 공백으로 채운다.
- ljust(폭) : 문자열을 왼쪽으로 정렬하고, 남는 공간은 공백으로 채운다.
- rjust(폭) : 문자열을 오른쪽으로 정렬하고, 남는 공간은 공백으로 채운다.
align_text = "Python"
print(f"중앙 정렬 (20칸): '{align_text.center(20)}'") # 출력: ' Python '
print(f"왼쪽 정렬 (20칸): '{align_text.ljust(20)}'") # 출력: 'Python '
print(f"오른쪽 정렬 (20칸): '{align_text.rjust(20)}'") # 출력: ' Python'
5.2. 문자열 반복
- * 연산자를 사용하여 문자열을 간단하게 반복할 수 있다.
repeat_text = "Python! " * 3
print(repeat_text) # 출력: Python! Python! Python!
📌 파이썬 문자열의 매우 중요한 특징은 '불변(Immutable)'이라는 점이다.
즉, 한번 생성된 문자열의 내용 자체는 바꿀 수 없다.
s = "Hello"
# s[0] = 'C' # 이렇게 첫 글자를 바꾸려고 하면 TypeError가 발생한다!
문자열을 '수정'하는 것처럼 보였던 replace() 같은 메서드들은 사실 기존 문자열을 바꾸는 것이 아니라, 변경된 새로운 문자열을 만들어서 반환하는 것이다.
'냠냠쩝쩝 > Python' 카테고리의 다른 글
[Python] 사용자 입력(Input) (9) | 2025.06.17 |
---|---|
[Python] 주석(Comment) (7) | 2025.06.14 |