문자열 다루기
문자열, 조립해서 뚝딱! 바이브 코딩 기초 3-3
이전엔 딕셔너리로 정보를 “이름-값” 형태로 깔끔하게 정리했잖아요.
이번엔 그 정보에서 자주 만지는 친구, 바로 문자열(string) 이야기를 해볼게요. 문자열은요… 솔직히 말하면 “그냥 텍스트”로 보이는데, 막상 다루다 보면 할 일이 진짜 많더라고요. 😅
그래서 오늘은 문자열을 자르고(파싱), 합치고(조립), 바꾸고(변환), 그리고 입력 처리에 어떻게 활용하는지까지 한 번에 감 잡아봅시다.
아! 그리고 실패담도 하나 끼워 넣을게요. 문자열 다루다 보면 누구나 한 번쯤은 “왜 이게 이렇게 나오지?” 하게 되거든요. 나도 그랬고요…ㅋㅋ
문자열이 뭐냐고요? 일단 다루기부터
문자열은 보통 이렇게 생겼죠.
"안녕하세요""1234""3.14"
중요한 포인트 하나만 짚고 갈게요.
"1234"는 문자예요 (따옴표가 있으면 문자열)1234는 숫자예요 (따옴표가 없으면 숫자)
사실은 이 차이를 놓치면, 변환에서 자꾸 삐끗합니다.
내가 예전에 계산기 만들다 "10" + "2"가 12가 아니라 102 나오는 거 보고… 어? 뭐지? 했었어요. (당연히 덧셈이 아니라 이어붙이기가 됐던 거죠 😭)
자르기: 슬라이싱(slicing)으로 딱 필요한 부분만
문자열에서 필요한 부분만 뽑고 싶을 때는 슬라이싱을 써요.
예시:
text = "Hello, Vibe Coding!"
print(text[0]) # H
print(text[7]) # V
print(text[0:5]) # Hello
print(text[7:14]) # Vibe Co
print(text[:5]) # Hello
print(text[7:]) # Vibe Coding!
여기서 규칙만 기억하면 돼요.
text[a:b]는a부터b바로 전까지:를 생략하면 시작/끝을 알아서 잡아줌
나름 이게 “문자열 자르기 끝판왕”이에요.
한 번 익숙해지면, 사실 파일이나 입력 데이터 다루는 거의 모든 상황에서 써요.
합치기: + 와 join
문자열 합치는 방법이 크게 2가지 있어요.
1) +로 이어붙이기
a = "Hello"
b = "World"
result = a + " " + b
print(result) # Hello World
근데 솔직히 말하면, 여러 조각을 계속 +로 이어붙이면 코드가 지저분해지기 쉬워요.
2) join으로 깔끔하게 합치기
words = ["I", "like", "vibe", "coding"]
sentence = " ".join(words)
print(sentence) # I like vibe coding
이건 진짜 편해요.
특히 리스트(이전 3-1에서 할 거죠!)랑 같이 쓰면 “아, 이게 쓰는 이유가 있구나” 느낌 옵니다.
변환: 숫자↔문자, 대소문자 바꾸기
문자열에서 자주 하는 변환들!
문자열 → 숫자
s = "100"
num = int(s)
print(num + 50) # 150
숫자 → 문자열
n = 42
s = str(n)
print(s + "번") # 42번
여기서 한 번만 더!
입력(input())은 전부 문자열로 들어와요. 그래서 계산하려면 보통 변환이 필요하죠.
대소문자 바꾸기
text = "Vibe Coding"
print(text.lower()) # vibe coding
print(text.upper()) # VIBE CODING
print(text.title()) # Vibe Coding
나름 “사용자 입력이 들쑥날쑥할 때” 대응하기 좋아요.
예를 들어 사용자가 yes, YES, Yes 다 쳐도 똑같이 처리하려면 소문자 변환 같은 걸 해주면 편하거든요.
공백 정리: strip, lstrip, rstrip
입력 받아보면 이런 일이 생겨요.
"안녕하세요 "(뒤에 공백 있음)" 시작"(앞에 공백 있음)
이럴 때 strip 계열이 구세주입니다.
text = " hi there "
print(text.strip()) # "hi there"
print(text.lstrip()) # "hi there "
print(text.rstrip()) # " hi there"
사실은 이걸 안 하면 “왜 비교가 안 되지?” 같은 문제로 한참 헤맬 수 있어요.
나도 한 번… “문자열이 다른 줄 알았는데 공백이더라” 진짜 웃겼습니다. 진짜요. 😅
문자열에서 “포함” 찾기: in / find
문장 안에 특정 단어가 들어있는지 확인할 때:
text = "Hello, Vibe Coding!"
print("Vibe" in text) # True
print("Python" in text) # False
그리고 위치가 필요하면 find도 좋아요.
text = "Hello, Vibe Coding!"
print(text.find("Vibe")) # 7
print(text.find("Python")) # -1 (없으면 -1)
팁 하나! in은 “있냐/없냐”가 목적일 때, find는 “몇 번째 위치냐”가 목적일 때 사용하면 딱이에요.
사용자 입력 처리에 문자열을 써보기
이제 슬쩍 실전 느낌으로 가봅시다.
예를 들어 사용자가 입력한 문장을 “잘라서” 첫 단어만 출력한다든지요.
name = input("이름을 입력해줘요: ") # 예: 김철수
first = name.strip() # 앞뒤 공백 제거
print("안녕하세요,", first)
또는 콜론(:)으로 구분된 입력을 처리해볼 수도 있어요.
예시 입력:
apple:10banana:20
data = input("예: apple:10 형태로 입력: ") # apple:10
key = data.split(":")[0]
value = data.split(":")[1]
print("품목:", key)
print("수량:", int(value)) # 숫자로 변환
여기서 split(":")가 핵심이에요.
:를 기준으로 쪼개서 리스트로 만들어줍니다.- 첫 번째/두 번째를 꺼내서 처리하죠.
솔직히 말하면, 문자열 다루는 실전은 보통 이런 “분해 → 정리 → 변환 → 처리” 흐름이에요.
오늘의 요약 (짧게 깔끔하게)
- 슬라이싱으로 문자열 자르기:
text[a:b] - 합치기는 상황별로:
- 간단하면
+ - 리스트가 있으면
"구분자".join(list)
- 간단하면
- 변환은 자주 필요:
int(),str().lower(),.upper()
- 공백 정리는 필수 습관:
.strip(),.lstrip(),.rstrip()
- 분해는
split():- 구분자로 나눠서 리스트로 만들기
- 포함 확인은
in, 위치는find()
다음 글 예고: 파일 입출력 기초로 넘어가요
다음엔 3-4. 파일 입출력 기초로 가볼 거예요.
솔직히 파일은 처음엔 좀 무서운데, 문자열을 배운 지금 보면 훨씬 덜 겁나요.
왜냐하면 파일을 다룰 때도 거의 똑같거든요:
- 파일에서 문자열을 읽고
strip(),split()으로 정리하고- 필요한 형태로 변환하고
- 다시 저장하기
자, 이제 문자열로 손에 익혔으니… 다음 단계에서 “이걸 파일에 연결하는 순간”이 진짜 재미있어집니다. 😄
다음 포스트에서 만나요!





