문자열

PJPJ·2026년 2월 21일

Coding_Test

목록 보기
2/8

문자열 뒤집기

1. 슬라이싱 [::-1] 사용 (가장 추천)

  • 파이썬의 슬라이싱 기능을 사용하여 처음부터 끝까지 -1칸 간격(역순)으로 가져오는 방법입니다. 코드가 가장 간결하고 빠릅니다.
s = "Hello"
reversed_s = s[::-1]
print(reversed_s)  # "olleH"

2. reversed()와 join() 사용

  • reversed() 함수는 문자열을 거꾸로 된 반복자(iterator)로 반환합니다. 이를 다시 문자열로 합치기 위해 ''.join()을 사용해야 합니다.
s = "Hello"
reversed_s = ''.join(reversed(s))
print(reversed_s)  # "olleH"

3. 반복문(Loop) 사용

  • 빈 문자열에 문자를 하나씩 앞으로 붙여가는 방식입니다. 알고리즘 학습용으로 좋지만, 파이썬에서는 위 두 방법보다 느리고 코드가 깁니다.
s = "Hello"
reversed_s = ""
for char in s:
    reversed_s = char + reversed_s
print(reversed_s)  # "olleH"

인덱스 찾기

1. index() or find() 사용

  • index() 또는 find() 메서드에 시작 위치를 지정하는 매개변수를 사용하면 됩니다. 차이점은 find()는 문자를 찾지 못하면 -1을 반환하고, index()는 ValueError를 발생시킵니다.
s = 'banana'
first_index = s.index('a')  # 첫 번째 'a': 1
second_index = s.index('a', first_index + 1)  # 두 번째 'a': 3
print(second_index)  # 3
s = 'banana'
first_index = s.find('a')  # 첫 번째 'a': 1
second_index = s.find('a', first_index + 1)  # 두 번째 'a': 3
print(second_index)  # 3

2. rindex() or rfind() 사용

  • 문자열 뒤에서부터 검색
s = 'banana'
last_index = s.rfind('a')  # 마지막 'a': 5
print(last_index)  # 5
s = 'banana'
last_index = s.rindex('a')  # 마지막 'a': 5
print(last_index)  # 5

strip()과 isspace()

strip() 메서드

문자열의 앞뒤 공백(또는 지정한 문자)을 제거하는 함수입니다. 새로운 문자열을 반환하며 원본은 바뀌지 않습니다.

s = "  hello  "
print(s.strip())    # "hello" (앞뒤 공백 제거)

s = "***hello***"
print(s.strip("*")) # "hello" (앞뒤 * 제거)

변형:

  • lstrip(): 왼쪽(앞)만 제거
  • rstrip(): 오른쪽(뒤)만 제거

isspace() 메서드

문자열이 공백 문자로만 구성되어 있는지 확인하고, True/False를 반환하는 판별 함수입니다.

print("   ".isspace())  # True (공백만 있음)
print("\t".isspace())   # True (탭도 공백으로 인식)
print(" hello".isspace()) # False (공백 + 문자)
print("".isspace())     # False (빈 문자열은 아님)

공백 문자 범위:

  • 스페이스( )
  • 탭(\t)
  • 줄바꿈(\n)
  • 캐리지 리턴(\r)
  • 폼피드(\f)
  • 수직 탭(\v)

비교 예제

s1 = "   "
s2 = " hello "

print(s1.isspace())     # True: 공백만으로 구성
print(s2.isspace())     # False: 공백 + 문자

print(s1.strip())       # "": 공백 제거 후 빈 문자열
print(s2.strip())       # "hello": 공백 제거 후 문자만 남음

요약:

  • strip() → 공백 제거 (문자열 반환)
  • isspace() → 공백 여부 판별 (True/False 반환)

문자열 변환

1. replace() 사용법

  • replace()는 원본 문자열을 직접 변경하지 않고, 변경된 새로운 문자열을 반환합니다. 원본을 바꾸려면 결과를 변수에 다시 저장해야 합니다.

기본 문법

new_str = old_str.replace(찾을문자, 바꿀문자, [횟수])
  • 찾을문자: 변경하고 싶은 대상

  • 바꿀문자: 새로 대체할 내용

  • 횟수(선택): 앞에서부터 몇 개만 바꿀지 지정 (생략 시 모두 변경).

예제

text = "hello world, hello python"

# 1. 모든 'hello'를 'hi'로 변경
new_text = text.replace("hello", "hi")
print(new_text)  # "hi world, hi python"

# 2. 앞에 있는 1개의 'hello'만 'hi'로 변경
one_change = text.replace("hello", "hi", 1)
print(one_change) # "hi world, hello python"

# 3. 공백 삭제 (자주 사용하는 팁)
no_space = text.replace(" ", "")
print(no_space)   # "helloworld,hellopython"

문자열 슬라이싱

슬라이싱 기본 문법

문자열[시작:끝:간격]
  • 시작(start): 잘라낼 시작 위치 (포함)

  • 끝(end): 잘라낼 끝 위치 (미포함, 이 앞까지만 자름)

  • 간격(step): 몇 칸씩 건너뛸지 설정 (생략 시 1).

자주 쓰는 슬라이싱 패턴

  1. 부분 추출 ([시작:끝])
    끝 인덱스는 포함되지 않는다는 점에 주의하세요.
text = "Hello Python"
print(text[0:5])   # "Hello" (0번부터 4번까지)
print(text[6:12])  # "Python" (6번부터 11번까지)
  1. 생략하기 ([:끝], [시작:])
    시작이나 끝을 생략하면 각각 '맨 처음'과 '맨 끝'을 의미합니다.
print(text[:5])    # "Hello" (처음부터 4번까지)
print(text[6:])    # "Python" (6번부터 끝까지)
print(text[:])     # "Hello Python" (전체 복사)
  1. 뒤에서부터 자르기 (- 인덱스)
    음수 인덱스는 뒤에서부터 셉니다 (-1이 맨 마지막).
print(text[-6:])   # "Python" (뒤에서 6번째부터 끝까지)
  1. 간격 지정하기 ([::간격])
    문자를 듬성듬성 가져오거나 뒤집을 때 사용합니다.
print(text[::2])   # "HloPto" (2칸씩 건너뛰며 추출)
print(text[::-1])  # "nohtyP olleH" (거꾸로 뒤집기)
  • 참고: 슬라이싱은 새로운 문자열을 만듭니다
    슬라이싱을 해도 원본 문자열 text는 변하지 않습니다. 잘라낸 결과는 새로운 문자열로 반환되므로, 필요하면 다른 변수에 저장해서 사용하세요.

0개의 댓글