Python 문자열(str) 처리 가이드: 기초부터 고급까지

2024. 11. 27. 22:47프로그래밍 언어/Python

 

Python에서 문자열은 가장 기본적이면서도 강력한 데이터 타입 중 하나입니다. 문자열 처리의 기초 개념부터 고급 활용까지, 이 글에서 모두 다뤄보겠습니다.

 


1. 문자열이란?

문자열(String)은 문자의 나열로, 작은따옴표(')나 큰따옴표(")로 감싸서 표현합니다.

여러 줄 문자열은 큰 따옴표 3개로 감싸서 표현합니다.

문자열 예제

# 작은따옴표와 큰따옴표로 문자열 생성
text1 = 'Hello'
text2 = "World"

# 여러 줄 문자열
multiline = """이 문자열은 
여러 줄로 작성할 수 있습니다."""
print(multiline)
 

 

 


2. 문자열 기본 연산

Python에서는 문자열에 대해 다양한 연산을 지원합니다.

1) 문자열 연결

문자열을 연결하려면 + 연산자를 사용합니다.

 
greeting = "Hello, " + "Python!"
print(greeting)  # Hello, Python!

 

2) 문자열 반복

문자열을 반복하려면 * 연산자를 사용합니다.

repeat = "Python! " * 3
print(repeat)  # Python! Python! Python!

 

3) 길이 확인

문자열의 길이는 len() 함수를 사용합니다.

 
length = len("Python")
print(length)  # 6

 

 


3. 문자열 슬라이싱과 인덱싱

문자열은 인덱스를 사용하여 특정 위치의 문자에 접근하거나, 슬라이싱을 통해 부분 문자열을 가져올 수 있습니다.

 

1) 인덱싱

문자열의 인덱스는 0부터 시작합니다. -1은 마지막 문자를 가져올 수 있습니다.
text = "Python"
print(text[0])  # 첫 번째 문자: 'P'
print(text[-1])  # 마지막 문자: 'n'

 

2) 슬라이싱

문자열의 범위를 시작인덱스:종료인덱스로 표현할 수 있씁니다.

시작인덱스를 생략하면 0, 즉 처음부터 검색하며

종료인덱스를 생략하면 마지막 문자까지 검색합니다.

text = "Hello, Python!"
print(text[0:5])  # 'Hello'
print(text[:5])   # 처음부터 5번째 문자까지: 'Hello'
print(text[7:])   # 7번째 문자부터 끝까지: 'Python!'

 

 


4. 문자열 메서드

Python은 문자열 조작을 위한 다양한 메서드를 제공합니다.

 

1) 문자열 변경

소문자 변경은 lower 함수를 사용하고 대문자 변경은 upper 함수를 사용합니다.
문자열 대체는 replace 함수를 사용합니다.
text = "Python is Fun"
print(text.lower())  # 모두 소문자: 'python is fun'
print(text.upper())  # 모두 대문자: 'PYTHON IS FUN'
print(text.replace("Fun", "Awesome"))  # 특정 부분 대체: 'Python is Awesome'

 

2) 문자열 검색

부분 문자열을 검색하여 해당 인덱스를 찾을 때는 find 함수를 이용합니다.
특정 문자열로 시작하는 경우는 startswith 함수, 특정 문자열로 끝나는 경우는 endswith 함수를 사용합니다.
 
text = "Learn Python Programming"
print(text.find("Python"))  # 'Python'의 시작 인덱스: 6
print(text.startswith("Learn"))  # 'Learn'으로 시작하는지 확인: True
print(text.endswith("ing"))  # 'ing'으로 끝나는지 확인: True

 

3) 공백 처리

trim 함수와 비슷하게 앞뒤 공백 제거는 strip 함수를 사용합니다.
왼쪽 공백만 제거할 때는 lstrip 함수, 오른쪽 공백만 제거할 때는 rstrip 함수를 사용합니다.
 
text = "   Python   "
print(text.strip())  # 앞뒤 공백 제거: 'Python'
print(text.lstrip())  # 왼쪽 공백 제거: 'Python   '
print(text.rstrip())  # 오른쪽 공백 제거: '   Python'

 

4) 문자열 나누기와 결합

문자열을 delimeter 기준으로 분할하여 array(list형)에 저장할 때는 split 함수를 사용합니다.
문자열끼리 연결할 때 delimeter를 중간에 넣고 싶을 때는 join 함수를 사용할 수 있습니다.
공백 외에도 콤마(,), 마침표(.)로 문자열을 연결하거나 슬래쉬(/), 역슬래쉬(\) 등으로 path를 표현할 때도 사용하면 편합니다.
 
text = "apple,banana,orange"
fruits = text.split(",")  # 콤마 기준으로 나누기
print(fruits)  # ['apple', 'banana', 'orange']

joined_text = " ".join(fruits)  # 리스트를 공백으로 연결
print(joined_text)  # 'apple banana orange'

 

 


5. 고급 문자열 formatting

1) f-string 사용

Python 3.6 이상에서는 f-string을 사용해 간단하게 문자열을 포맷팅할 수 있습니다.

%s를 여러 개 사용하지 않고 원하는 부분에 변수의 값을 넣을 때 유용하게 사용할 수 있어서 저도 자주 사용하는 편입니다.

 

 
name = "Alice"
age = 25
print(f"My name is {name} and I'm {age} years old.")  # 'My name is Alice and I'm 25 years old.'

 

2) .format() 사용

{} 부분을 format 함수의 파라미터로 전달한 문자열 또는 변수의 값으로 치환하는 함수입니다.
 
greeting = "Hello, {}!".format("Bob")
print(greeting)  # 'Hello, Bob!'

 

 


6. 문자열과 정규표현식

정규표현식을 활용하면 패턴에 따라 문자열을 검색하거나 변환할 수 있습니다.

 
import re

text = "My phone number is 123-456-7890."
pattern = r"\d{3}-\d{3}-\d{4}"

# 패턴 검색
match = re.search(pattern, text)
if match:
    print(match.group())  # '123-456-7890'

 

 


7. 문자열과 인코딩

문자열은 encode()와 decode()를 사용해 인코딩과 디코딩이 가능합니다.

text = "안녕하세요"
encoded = text.encode("utf-8")  # 문자열을 바이트로 인코딩
print(encoded)  # b'\xec\x95\x88\xeb\x85\x95\xed\x95\x98\xec\x84\xb8\xec\x9a\x94'

decoded = encoded.decode("utf-8")  # 바이트를 다시 문자열로 디코딩
print(decoded)  # '안녕하세요'
 
 

 

 


8. 문자열 처리 꿀팁

 - 문자열 거꾸로 뒤집기

text = "Python"
print(text[::-1])  # 'nohtyP'

 

 

- 특정 단어 개수 세기

text = "apple banana apple orange apple"
print(text.count("apple"))  # 3

 

 

 

- 문자열 포함여부 확인

  특정 문자열이 포함되어 있는지 확인할 때 in을 사용합니다. JAVA의 contains() 함수와 비슷하다고 보시면 됩니다.

text = """Line 1
Line 2
Line 3"""
print("Line 2" in text)  # True

 

 


마무리

문자열은 Python에서 매우 자주 사용되는 데이터 타입이며, 그 활용법도 무궁무진합니다. 이번 가이드를 통해 기초부터 고급 기능까지 폭넓게 익히셨길 바랍니다. 연습을 통해 문자열 조작에 더욱 익숙해지세요! 🚀

반응형