문자열 다루기

in #krsuccess12 days ago

문자열, 조립해서 뚝딱! 바이브 코딩 기초 3-3

PublicDomainPictures

이전엔 딕셔너리로 정보를 “이름-값” 형태로 깔끔하게 정리했잖아요.
이번엔 그 정보에서 자주 만지는 친구, 바로 문자열(string) 이야기를 해볼게요. 문자열은요… 솔직히 말하면 “그냥 텍스트”로 보이는데, 막상 다루다 보면 할 일이 진짜 많더라고요. 😅
그래서 오늘은 문자열을 자르고(파싱), 합치고(조립), 바꾸고(변환), 그리고 입력 처리에 어떻게 활용하는지까지 한 번에 감 잡아봅시다.

아! 그리고 실패담도 하나 끼워 넣을게요. 문자열 다루다 보면 누구나 한 번쯤은 “왜 이게 이렇게 나오지?” 하게 되거든요. 나도 그랬고요…ㅋㅋ

Pexels


문자열이 뭐냐고요? 일단 다루기부터

문자열은 보통 이렇게 생겼죠.

  • "안녕하세요"
  • "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 바로 전까지
  • :를 생략하면 시작/끝을 알아서 잡아줌

나름 이게 “문자열 자르기 끝판왕”이에요.
한 번 익숙해지면, 사실 파일이나 입력 데이터 다루는 거의 모든 상황에서 써요.

Simon


합치기: + 와 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:10
  • banana:20
data = input("예: apple:10 형태로 입력: ")  # apple:10

key = data.split(":")[0]
value = data.split(":")[1]

print("품목:", key)
print("수량:", int(value))  # 숫자로 변환

여기서 split(":")가 핵심이에요.

  • :를 기준으로 쪼개서 리스트로 만들어줍니다.
  • 첫 번째/두 번째를 꺼내서 처리하죠.

솔직히 말하면, 문자열 다루는 실전은 보통 이런 “분해 → 정리 → 변환 → 처리” 흐름이에요.

Sunriseforever


오늘의 요약 (짧게 깔끔하게)

  • 슬라이싱으로 문자열 자르기: text[a:b]
  • 합치기는 상황별로:
    • 간단하면 +
    • 리스트가 있으면 "구분자".join(list)
  • 변환은 자주 필요:
    • int(), str()
    • .lower(), .upper()
  • 공백 정리는 필수 습관:
    • .strip(), .lstrip(), .rstrip()
  • 분해split():
    • 구분자로 나눠서 리스트로 만들기
  • 포함 확인in, 위치는 find()

PublicDomainPictures


다음 글 예고: 파일 입출력 기초로 넘어가요

다음엔 3-4. 파일 입출력 기초로 가볼 거예요.
솔직히 파일은 처음엔 좀 무서운데, 문자열을 배운 지금 보면 훨씬 덜 겁나요.

왜냐하면 파일을 다룰 때도 거의 똑같거든요:

  • 파일에서 문자열을 읽고
  • strip(), split()으로 정리하고
  • 필요한 형태로 변환하고
  • 다시 저장하기

자, 이제 문자열로 손에 익혔으니… 다음 단계에서 “이걸 파일에 연결하는 순간”이 진짜 재미있어집니다. 😄
다음 포스트에서 만나요!

Kanenori