
🔶 문자열 연산하기
파이썬에선 문자열을 더하거나 곱할 수 있습니다.
물론 숫자처럼 수를 더하거나 하는 개념은 아니지만, 뭔가를 덧붙이거나 반복할 때 쓰이게 되죠.
이는 다른 언어에서는 잘 되지 않는 기능이지만, 인간에게 친화적인 언어인 파이썬에선 가능합니다.
🔹문자열 더해서 연결하기
파이썬에서 +는 숫자 덧셈뿐 아니라, 문자열끼리도 연결(이어붙이기)도 할 수 있습니다.
head = "Python"
tail = " is my life"
head + tail
Python is my life
head, tail이라는 두 개의 변수에 각각 문자열을 넣어주고 두 변수를 더해줬습니다.
문자열을 서로 더하면 저렇게 변수가 +에 의해서 합쳐지게 되죠.
🔹문자열 곱해서 반복하기
*는 숫자끼리는 곱셈이지만, 문자열과 숫자를 곱하면 문자열이 반복 출력됩니다.
word = "Python"
word * 3
PythonPythonPython
위 소스코드에서 word * 3이라는 문장은 word를 3번 반복하라는 뜻입니다.
즉, *는 문자열의 반복을 뜻하는 의미로 사용됩니다.
🔹문자열 곱하기 응용
문자열 곱하기를 조금 더 응용해봅시다.
아래처럼 곱하기와 특수기호를 활용하면 간단한 효과도 손쉽게 만들 수 있습니다.
print("=" * 15)
print("Happy Birthday!")
print("=" * 15)
===============
Happy Birthday!
===============
🔹문자열 길이 구하기
문자열의 길이는 다음과 같이 len 함수를 사용하면 구할 수 있습니다.
len 함수는 print 함수처럼 파이썬의 기본 내장 함수로, 별다른 설정 없이 바로 사용할 수 있습니다.
word = "Python is my life"
len(word)
17
🔶 문자열 인덱싱(Indexing)
문자열은 글자 하나하나가 순서(index)를 가지고 있습니다.
이 순서를 이용하면 문자열 속 특정 글자를 꺼낼 수 있죠.
인덱싱(indexing)이란 무엇인가를 '가리킨다'라는 뜻입니다.
word = "Python is my life"
print(word[3])
h
위 코드에서 변수 word에 저장한 문자열 "Python is my life"의 각 문자마다 번호를 매겨 보면 다음과 같습니다.

표에서 볼 수 있듯이 "Python is my life" 문자열에서 P는 첫 번째 자리를 뜻하는 숫자 0에 해당합니다.
즉, word[3]은 "Python is my life"에서 네 번째인 h에 해당됩니다. (0123이기 때문에)
여기서 명심해야 할 것은 "파이썬은 0부터 숫자를 센다"라는 점입니다.
0부터 숫자를 센다는 것이 처음에는 익숙하지 않겠지만, 계속 반복해서 사용하다보면 자연스럽게 익숙해질 겁니다.
위 예에서 볼 수 있듯이 word[번호]는 문자열 안의 특정한 값을 뽑아내는 역할을 합니다. 이러한 작업을 '인덱싱'이라고 합니다.
🔹인덱싱 활용하기
인덱싱의 예를 조금 더 살펴보겠습니다.
word = "Python is my life"
print(word[0])
print(word[10])
print(word[-1])
p
m
e
앞의 word[0]과 word[10]은 쉽게 이해가 가능한데, 마지막의 word[-1]이 뜻하는 것은 뭘까요?
눈치가 빠른 사람이라면 눈치챘겠지만, 문자열을 뒤에서 읽기 위해 -(빼기) 기호를 붙인 것입니다.
즉, word[-1]은 뒤에서부터 세어 첫 번째가 되는 문자를 말합니다.
그러니 "Python is my life"에서 가장 끝에 있는 e가 출력된 것이죠.
만약 word[-0]을 했다면?? -0은 0과 동일하기 때문에 맨 처음 알파벳인 P가 출력되게 됩니다.
🔶 문자열 슬라이싱(slicing)
인덱싱에선 문자를 뽑아내는 방법을 알아봤는데, "Python" 같은 아예 단어를 뽑아내는 방법은 없을까요?
word = "Python is my life"
a = word[0] + word[1] + word[2] + word[3] + word[4] + word[5]
a
Python
이렇게 인덱싱을 이용해 하나하나 뽑아내는 것도 가능하긴 하지만, 코드가 너무 길고 비효율적입니다.
이럴떄 파이썬에서는 더 좋은 방법을 제공하는데, 그게 바로 슬라이싱(slicing)입니다.
위 예는 슬라이싱 기법으로 다음과 같이 간단하게 처리할 수 있습니다.
word = "Python is my life"
word[0:6]
Python
word[0:6]은 word 문자열, 즉 "Python is my life" 문자열에서 자리번호 0부터 6까지의 문자를 뽑아낸다는 뜻입니다.
하지만 word[0]은 P이고 이걸 5까지만 하면 총 6개가 되어서 "Python"이 될 거 같은데, 왜 [0:5]가 아닌 [0:6]을 입력했을까요??
이렇게 해야하는 이유는 슬라이싱 기법으로 a[시작:끝]을 지정할 때 끝번호에 해당하는 문자는 포함하지 않기 때문입니다.
즉, word[0:6]를 수식으로 나타내면 다음과 같습니다.
0 <= word < 6
참고로 이 개념은 상당히 헷갈리기가 쉽기 때문에 꾸준히 반복해서 봐야만 익숙해 질 수 있습니다.
또 슬라이싱 할 때 항상 시작 번호가 0일 필요는 없습니다.
word[7:9]
is
word[시작 : 끝]에서 끝 번호 부분을 생략했을 때는 시작 번호부터 그 문자열의 끝까지 뽑아냅니다.
word[10:]
my life
반대로 word[시작 : 끝]에서 시작 번호를 생략하면 문자열의 처음부터 끝 번호까지 뽑아냅니다.
word[:9]
Python is
word[시작 : 끝]에서 시작 번호와 끝 번호를 생략하면 문자열의 처음부터 끝까지 뽑아냅니다.
word[:]
Python is my life
슬라이싱에서도 인덱싱과 마찬가지로 -(뺴기) 기호를 사용할 수 있습니다.
word[7:-5]
is my
word[7:-5]는 word[7]에서 word[-5]까지를 의미합니다.
이때에도 word[-5]는 포함되지 않습니다.
🔹슬라이싱으로 문자열 나누기
다음은 자주 사용하는 슬라이싱 기법 중 하나입니다.
calendar = "20250530Rainy"
year = calendar[:4]
month = calendar[4:6]
date = calendar[6:8]
weather = calendar[8:]
print(year)
print(month)
print(date)
print(weather)
2025
05
30
Rainy
위 예는 문자열 calendar를 두 부분으로 나누는 기법입니다.
숫자 4를 기준으로 문자열 calendar를 양쪽으로 한 번씩 슬라이싱 했습니다.
calendar[:4]는 [4]를 포함하지 않고, calendar[4:]는 [4]를 포함하기 때문에 8을 기준으로 해서 두 부분으로 나눌 수 있는 것이죠.
🔑 문자열 명칭 바꾸기
Date라는 문자열을 Late라는 문자열로 바꾸려면 어떻게 해야 할까요??
제일먼저 앞글자 D를 지운 다음, 그 자리에 D대신 L을 넣어야 할 겁니다.
이를 슬라이싱을 이용해서 만들면 다음과 같이 됩니다.
a = "Date"
a[:0]
a[1:]
a[:0] + 'L' + a[1:]
Late
즉, 슬라이스가 '맨 마지막 문자를 포함시키지 않는다'는 원리를 이용해주면 되는 거죠.
🔶 AI피드백
Q. 오늘은 Python에서 문자열 연산 (+, *) 두가지와 인덱싱, 슬라이싱에 대해 배웠어. 이 기능들이 파이썬에서 얼마나 중요한 기능인지, 또 어디에 쓰이는지 알려줄 수 있어??
A.오늘 배운 문자열 연산, 인덱싱, 슬라이싱은 파이썬에서 매우 핵심적인 기능들이야.
아직 겉보기에는 간단해 보일 수 있지만, 실제 개발 현장에선 수없이 쓰이는 실전 무기들이지.
✅ 얼마나 중요한 기능인가?
| 기능 | 중요도 | 설명 |
| 문자열 +, * 연산 | ⭐⭐⭐ | 문자열 조합과 반복을 매우 직관적으로 다룰 수 있음 |
| 인덱싱 | ⭐⭐⭐⭐ | 문자열뿐 아니라 리스트, 튜플, 배열 등 모든 시퀀스형 자료의 기본 |
| 슬라이싱 | ⭐⭐⭐⭐ | 대용량 데이터, 텍스트 처리에서 자르기, 추출, 포맷 등 거의 모든 곳에서 사용 |
🧠 어디에 쓰일까?
🔹 문자열 +, * 연산
- UI 출력 꾸미기 (ex. 구분선, 제목 강조)
- 데이터 자동 생성 (ex. 같은 문자열 반복)
- 간단한 시뮬레이션 결과 정렬 출력
📌 예:
print("=" * 30)
print("🎮 Welcome to My Game!")
print("=" * 30)
🔹 인덱싱
- 문자열에서 특정 문자 추출
- 비밀번호나 코드 유효성 검사 (예: 맨 앞자리가 숫자인지)
- 에러 로그, 입력 문자열 가공 등
📌 예:
code = "A90124"
if code[0] == "A":
print("A 타입 코드입니다.")
🔹 슬라이싱
- 날짜·시간 파싱 (YYYYMMDD → 연, 월, 일 분리)
- 텍스트 일부만 추출/편집
- 시퀀스 데이터 분석 (리스트, 문자열 등)
📌 예:
birth = "20010515"
year = birth[:4]
month = birth[4:6]
day = birth[6:]
print(f"생년월일: {year}년 {month}월 {day}일")
🔄 다른 분야에서도 자주 쓰일까?
| 분야 | 문자열 연산 | 인덱싱/슬라이싱 |
| 🌐 웹 개발 | 사용자 입력 처리 | URL이나 HTML 조각 추출 |
| 🤖 인공지능 | 전처리 텍스트 정제 | 단어 토큰 나누기 |
| 🎮 게임 개발 | 대사, 설정 파일 처리 | 텍스트 출력, UI 데이터 처리 |
| 📊 데이터 분석 | 문자열 컬럼 조합 | 이름, 주소, 코드 자르기 |
| 📱 앱 개발 | 알림 텍스트 처리 | 조건별 분기 처리 |
⚜️ 응용이 어려워질 수도 있어?
그렇다. 응용은 쉬운 게 아니다!
- 슬라이싱 범위 실수: a[2:5]와 a[2:-1]은 전혀 다른 결과
- 인덱싱과 for문 결합 → 문자열 반복 추출, 처리
- [::-1]처럼 슬라이싱으로 문자열 뒤집기도 가능
📌 예제: 문자열 뒤집기
word = "hello"
print(word[::-1]) # olleh
✅ 요약 정리
- 문자열 연산, 인덱싱, 슬라이싱은 파이썬에서 거의 모든 분야에 사용됨
- 간단해 보이지만 활용도는 매우 높고 응용은 깊다
- 특히 슬라이싱은 초보자에게는 헷갈리지만 익숙해지면 엄청난 무기가 됨
'Python > 입문' 카테고리의 다른 글
| [#6] 문자열 포매팅(formatting) (1) | 2025.06.23 |
|---|---|
| [#4] 파이썬에서 문자열(String) 만들기 (4) | 2025.06.06 |
| [#3] 파이썬 프로그래밍의 기초가 되는 '자료형 - 숫자형' (5) | 2025.05.27 |
| [#2] 조건문, 반복문, 함수 기본 개념 이해하기 (0) | 2025.05.24 |
| [#1] 파이썬으로 덧셈 뺄셈 곱셈 나눗셈 등 사칙연산 해보기+변수 이해하기 (2) | 2025.05.22 |