파이썬 문자열 함수 : f-string, count(), find(), replace(), join(), index()

파이썬의 기초 문법 중 하나인 문자열 함수 !! 저는 파이썬 문자열 함수는 약 4년 전에 파이썬 처음 공부할 때 빼고는 본 적이 없습니다.

그런데 알고리즘 문제를 풀다 보니 다시 한 번 정리하면 좋을 것 같아서 몇 가지 정리해보았습니다.

f-string : 파이썬 문자열 포맷팅

문자열 안에서 변수 값을 간편하게 삽입할 수 있습니다.

f-string은 문자열 앞에 f를 붙여서 사용합니다. 중괄호 {} 안에 변수나 표현식을 넣어 해당 값을 문자열에 삽입합니다.

기본 사용법

name = "Alice"
age = 30

# f-string 사용 예제
greeting = f"안녕하세요, 제 이름은 {name}이고, 나이는 {age}살입니다."
print(greeting)

f-string 디버깅

print(f'{변수명=}')

파이썬 3.8이상 부터 가능한 기능입니다.
변수명= 이런식으로 적으면 자동으로 아래와 같이 출력해줍니다.

a = [1, 2, 3, 4]
b = {1: [0, 0, 1], 2: [1, 0, 0]}

print(f"{a=} // {b=}")  # a=[1, 2, 3, 4] // b={1: [0, 0, 1], 2: [1, 0, 0]}

소수점 지정

소수점 이하 자릿수를 제한하거나 정수로 표시할 수 있습니다.

PI = 3.141592
print(f"파이는 {PI:.2f}")  # 파이는 3.14

참고. 실수를 정수로 표현하는 법
import math

float_num = 3.141592

print(math.floor(float_num))  # 3
print(f"{float_num:.0f}")  # 3
print(int(float_num))  # 3
print(round(float_num,0))  # 3.0
print(float_num//1)  # 3.0

조건문 반복문 사용

is_adult = True

# 조건문과 반복문 사용 예제
message = f"당신은 {'성인' if is_adult else '미성년자'}입니다."
print(message)

문자열 뒤집기 (회문)

strs1 = "KOREA"
strs2 = strs1[::-1]
print(f"{strs1=}, {strs2=}")  # strs1='KOREA', strs2='AEROK'

count(): 특정 문자열 등장 횟수 세기

count() 함수는 특정 부분 문자열이 문자열 내에서 몇 번 등장하는지 세어줍니다.

sentence = "She sells seashells by the seashore."
count_sea = sentence.count("sea")
print(f"'sea' 등장 횟수: {count_sea}")

반복 문자열에서 count() 함수 사용시 유의점

count() 함수는 한 번 카운트한 문자열은 제외하고 그 다음 문자열부터 다시 count를 시작합니다. 때문에 아래와 같이 011101110에서 01110은 2개임에도 1개로 count를 해줍니다.

print('011101110'.count('01110'))  #1

이를 해결하기 위해서는 결국 반복문으로 탐색을 해야 합니다.
cocococo 에서 coco 문자열의 수를 찾는다고 하면 아래와 같이 2가지 경우로 찾을 수 있습니다.

strs = "cocococo"
find_str = "coco"
iter_count = 0
for i in range(len(strs)-len(find_str)+1):
    substr = strs[i:i+len(find_str)]
    if substr == find_str:
        iter_count += 1

print(f"{iter_count=}")   # iter_count=3
print(f"{strs.count(find_str)=}")  # strs.count(find_str)=2

find() : 부분 문자열 위치 찾기

find() 함수는 특정 부분 문자열이 문자열 내에서 처음으로 나타나는 위치의 인덱스를 반환합니다.

만약 찾지 못할 경우 -1을 반환합니다.

찾지 못할 경우 0이 아닌 -1을 반환하는 것에 유의해야 합니다.

word = "apple"
index_a = word.find("a")
print(f"'a'의 첫 등장 위치: {index_a}")

replace() : 문자열 치환

replace() 함수는 문자열 내의 특정 부분 문자열을 다른 문자열로 치환합니다.

sentence = "I like programming with Python." 
new_sentence = sentence.replace("Python", "Java") 
print(f"치환 결과: {new_sentence}")

join() : 문자열 리스트 결합

join() 함수는 문자열 리스트를 특정 구분자를 이용해 결합합니다.

words = ["Python", "is", "awesome"]
combined_string = " ".join(words)
print(f"결합 결과: {combined_string}")

index() : 부분 문자열 위치 찾기

index() 함수는 특정 부분 문자열이 문자열 내에서 처음으로 나타나는 인덱스를 반환합니다.

str.index(sub, start, end)
  • str: 검색 대상이 되는 문자열
  • sub: 찾고자 하는 부분 문자열
  • start (옵션): 검색을 시작할 인덱스. 기본값은 0입니다.
  • end (옵션): 검색을 끝낼 인덱스. 기본값은 문자열의 길이입니다.

인자를 ‘찾고자 하는 문자열’ 하나만 입력하면 문자열 내에서 가장 처음으로 나오는 인덱스만 찾을 수 있습니다.

반면에 start, end에 인자를 넣어주면 원하는 범위의 문자열에서 인덱스를 찾을 수 있습니다.

# 문자열 정의
text = "Python is powerful and Python is easy."

# 'is'의 첫 번째 등장 위치 찾기
index1 = text.index('is')
print(f"첫 번째 'is'의 인덱스: {index1}")

# 두 번째 'is'의 위치 찾기 (시작 인덱스 지정)
index2 = text.index('is', index1 + 1)
print(f"두 번째 'is'의 인덱스: {index2}")

# 특정 범위 내에서 검색
index3 = text.index('is', 15, 30)
print(f"15부터 30 사이에서 'is'의 인덱스: {index3}")

참고하면 좋은 글

Leave a Comment

목차