Python 문자열 연산 마스터하기: replace, join, split, reverse, 대소문자 변환
Python에서 모든 엔티티는 객체 – 문자열 포함. 문자열은 단순히 따옴표로 감싼 문자 시퀀스입니다.
예시:
var = "Hello World!"
이 가이드는 실전 예제와 모범 사례로 가장 흔한 문자열 연산 안내.
- 슬라이싱으로 문자 접근
- 문자열 연산자와 연결
- 부분문자열 치환
- 대소문자 변경 (upper/lower/capitalize)
join으로 유연한 연결
- 문자열 뒤집기
- 문자열 분할
문자열에서 문자 접근
Python에 별도 문자 타입 없음; 단일 문자는 길이 1 문자열. 대괄호와 인덱스로 슬라이싱.
var1 = "Guru99!"
var2 = "Software Testing"
print("var1[0]:", var1[0])
print("var2[1:5]:", var2[1:5])
출력:
var1[0]: G
var2[1:5]: oftw
문자열 연산자
연산자로 빠른 조작 가능:
| 연산자 | 설명 | 예제 |
| [] | 단일 문자 접근 | x = "Guru" print(x[1]) — "u" 출력 |
| [:] | 범위 슬라이싱 (끝 미포함) | x = "Guru" print(x[1:3]) — "ur" 출력 |
| in / not in | 멤버십 검사 | print("u" in x) — True |
| r/R | 로우 문자열 리터럴 (이스케이프 무시) | print(r"\n") — "\n" 출력 |
| % | 문자열 포매팅 (구식) | print('%s %d' % ('guru', 99)) — "guru 99" |
| + | 두 문자열 연결 | print("Guru" + "99") — "Guru99" |
| * | 문자열 반복 | print("Guru" * 2) — "GuruGuru" |
문자열 업데이트
문자열은 불변이므로 변수에 새 값 재할당.
x = "Hello World!"
print(x[:6]) # "Hello"
print(x[0:6] + "Guru99") # "Hello Guru99"
부분문자열 치환
replace() 메서드는 부분문자열 모든 발생을 치환한 새 문자열 반환.
old = "I like Guru99"
new = old.replace('like', 'love')
print(new) # "I love Guru99"
대소문자 변경
대문자, 소문자, 첫 글자 대문자로 변환.
text = "python at guru99"
print(text.upper()) # "PYTHON AT GURU99"
print(text.capitalize()) # "Python at guru99"
print(text.upper().lower()) # 다시 소문자
문자 연결 (join)
join() 메서드는 문자열 이터러블을 구분자로 연결.
print(":".join("Python")) # "P:y:t:h:o:n"
문자열 뒤집기
reversed()와 join()로 뒤집기.
s = "12345"
print(''.join(reversed(s))) # "54321"
문자열 분할
구분자 기준 문자열을 리스트로 분할.
sentence = "guru99 career guru99"
print(sentence.split(' ')) # ['guru99', 'career', 'guru99']
print(sentence.split('r')) # ['gu', 'u99 ca', 'ee', ' gu', 'u99']
불변성 상기
문자열은 제자리 변경 불가. replace() 같은 메서드는 새 문자열 반환.
x = "Guru99"
print(x.replace("Guru99", "Python")) # 여전히 "Guru99"
# 변수 변경하려면 재할당
x = x.replace("Guru99", "Python")
print(x) # "Python"
Python 2 호환성
아래는 괄호 없는 print 문 쓰는 Python 2 동등 코드.
# 값 접근
var1 = "Guru99!"
var2 = "Software Testing"
print "var1[0]:", var1[0]
print "var2[1:5]:", var2[1:5]
# 업데이트 예제
x = "Hello World!"
print x[:6]
print x[0:6] + "Guru99"
# 치환 예제
old = 'I like Guru99'
print old.replace('like', 'love')
# 대소문자 변환
text = "python at guru99"
print text.upper()
print text.capitalize()
print text.lower()
# Join
print ":".join("Python")
# Reverse
s = "12345"
print ''.join(reversed(s))
# Split
word = "guru99 career guru99"
print word.split(' ')
print word.split('r')
# 불변성 데모
x = "Guru99"
print x.replace("Guru99", "Python")
x = x.replace("Guru99", "Python")
print x
요약
- 슬라이싱(
[], [:])으로 정밀 문자 접근.
- 문자열 연산자(+, *, in, not in) 활용해 연결과 멤버십 검사.
replace()로 부분문자열 치환; 새 문자열 반환함 기억.
upper(), lower(), capitalize()로 대소문자 변환.
- 임의 구분자로
join() 결합해 유연한 연결.
reversed()+join()로 뒤집기, split()로 분할.
- 문자열 불변성으로 변경사항 포착하려면 항상 재할당.