[#5] 문자열 연산과 인덱싱, 슬라이싱

 

🔶 문자열 연산하기

 

파이썬에선 문자열을 더하거나 곱할 수 있습니다.

물론 숫자처럼 수를 더하거나 하는 개념은 아니지만, 뭔가를 덧붙이거나 반복할 때 쓰이게 되죠.

이는 다른 언어에서는 잘 되지 않는 기능이지만, 인간에게 친화적인 언어인 파이썬에선 가능합니다.

 

 

🔹문자열 더해서 연결하기

 

파이썬에서 +는 숫자 덧셈뿐 아니라, 문자열끼리도 연결(이어붙이기)도 할 수 있습니다.

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

 

 

✅ 요약 정리

  • 문자열 연산, 인덱싱, 슬라이싱은 파이썬에서 거의 모든 분야에 사용됨
  • 간단해 보이지만 활용도는 매우 높고 응용은 깊다
  • 특히 슬라이싱은 초보자에게는 헷갈리지만 익숙해지면 엄청난 무기가 됨