MCP - 5일차(문자열 함수)

Jun·2026년 1월 31일

MCP

목록 보기
7/20

🐍Python 문자열 함수 및 메소드 총정리

파이썬에서 문자열을 다루는 다양한 내장 함수와 메소드들을 정리하고, 실전 예제를 통해 활용법을 알아봅니다.


💡 1. 대소문자 변환: upper(), lower()

원본 문자열은 유지하며, 새로운 변환된 문자열을 반환합니다.

    str1 = "Apple"

    print(str1.upper()) # APPLE
    print(str1.lower()) # apple
    print(str1)         # Apple (원본 유지)

    # 대소문자 구분 없이 비교할 때 유용
    print('Car'.upper() == 'car'.upper()) # True

💡 2. 공백 제거 및 치환: strip(), replace()

  • strip() : 문자열 좌우의 공백을 제거합니다.
  • replace(old, new) : 특정 문자열을 찾아 다른 문자열로 바꿉니다.
    a = "   Hello, World!   "
    print(a.strip()) # "Hello, World!"

    print(a.upper().strip().replace('H', 'J')) # "JELLO, WORLD!"

🔹 예제 : " 21,300원 "을 정수 21300으로 바꾸기

   a = "  21,300원 "
    result = int(a.replace(",", "").replace("원", "").strip())
    print(result) # 21300

💡 3. 분리 및 결합: split(), join()

  • split(sep): 구분자를 기준으로 리스트로 분리합니다. (인자가 없으면 공백 기준)

  • join(iterable): 리스트의 요소들을 특정 구분자로 합쳐 문자열을 만듭니다.

    data = "사과,바나나,파인애플"
    lst = data.split(",") # ['사과', '바나나', '파인애플']

    words = ["A", "B", "C"]
    print("--".join(words)) # "A--B--C"

💡 4. 위치 찾기 및 개수 세기: find(), index(), count()

  • index(): 찾으려는 문자열이 없으면 ValueError 발생합니다.
  • find(): 찾으려는 문자열이 없으면 -1반환합니다.

    • 문자열이 시작되는 첫 번째 인덱스를 반환합니다.
      만약 문자열 안에 찾고자 하는 패턴이 여러 번 등장하더라도,
      가장 처음 발견된 인덱스만 결과값으로 줍니다.
  • count(): 특정 패턴의 등장 횟수 반환합니다..

    str3 = "hello python"
    print(str3.find('lo')) # 3
    print(str3.find('xx')) # -1

    str4 = "aabababbabbaababb"
    print(str4.count("ba")) # 5
 
    
    

💡 5. 시작/종료 확인 및 아스키 코드: startswith(), endswith(), ord(), chr()

  • 시작/종료 확인

    • startswith() : 문자열이 특정 문자열로 시작 여부입니다.

    • endswith() : 문자열이 특정 문자열로 종료 하는지 여부입니다.

  • 아스키코드
    ※ 위 함수는 문자열 메소드가 아니라 파이썬 기본내장 함수

    • ord() : 문자의 코드값입니다.

    • chr() : 코드의 문자값입니다.

# 시작/종료 예시

    url = "[https://www.google.com](https://www.google.com)"
    print(url.startswith('http')) # True
    print(url.endswith('.com'))    # True


# 아스키 코드 변환 (내장 함수)

    print(ord("A")) # 65  대문자와 소문자는 32차이가 난다. 
    print(ord('a')) # 97
    print(chr(97))  # 'a'       

💡 6. 실전 응용 예제

✅ 알파벳 등장 개수 세기 (Dict Comprehension)

문자열 내에서 알파벳만 추출하여 빈도수를 딕셔너리로 만듭니다.

방법 1 :문자열 메소드 + dict comprehension 사용
    word = "Alice in wonderland"
    word = word.lower()

    # set을 활용해 중복을 제거한 뒤 count 수행
    result = {ch : word.count(ch) for ch in set(word) if ch.isalpha()}
    print(result)
 
출력 결과 
# {'a': 2,
#  'c': 1,
#  'd': 2,
#  'e': 2,
#  'i': 2,
#  'l': 2,
#  'n': 3,
#  'o': 1,
#  'r': 1,
#  'w': 1}  
--------------------------------------------------------------------------------------
방법 2 : for + dict
data = word.lower()

result = {}

for ch in data:
  if 'a' <= ch <= 'z':  # 알파벳만
    if not result.get(ch):  # 첫 등장이면 1
      result[ch] = 1
    else:  # 이미 이전에 한번이라도 등장했다면!
      result[ch] += 1

  print(f'{ch} -> {result}') # 중간단계 확인

print('🟪', result)
"""
a -> {'a': 1}
l -> {'a': 1, 'l': 1}
i -> {'a': 1, 'l': 1, 'i': 1}
c -> {'a': 1, 'l': 1, 'i': 1, 'c': 1}
e -> {'a': 1, 'l': 1, 'i': 1, 'c': 1, 'e': 1}
  -> {'a': 1, 'l': 1, 'i': 1, 'c': 1, 'e': 1}
i -> {'a': 1, 'l': 1, 'i': 2, 'c': 1, 'e': 1}
n -> {'a': 1, 'l': 1, 'i': 2, 'c': 1, 'e': 1, 'n': 1}
  -> {'a': 1, 'l': 1, 'i': 2, 'c': 1, 'e': 1, 'n': 1}
w -> {'a': 1, 'l': 1, 'i': 2, 'c': 1, 'e': 1, 'n': 1, 'w': 1}
o -> {'a': 1, 'l': 1, 'i': 2, 'c': 1, 'e': 1, 'n': 1, 'w': 1, 'o': 1}
n -> {'a': 1, 'l': 1, 'i': 2, 'c': 1, 'e': 1, 'n': 2, 'w': 1, 'o': 1}
d -> {'a': 1, 'l': 1, 'i': 2, 'c': 1, 'e': 1, 'n': 2, 'w': 1, 'o': 1, 'd': 1}
e -> {'a': 1, 'l': 1, 'i': 2, 'c': 1, 'e': 2, 'n': 2, 'w': 1, 'o': 1, 'd': 1}
r -> {'a': 1, 'l': 1, 'i': 2, 'c': 1, 'e': 2, 'n': 2, 'w': 1, 'o': 1, 'd': 1, 'r': 1}
l -> {'a': 1, 'l': 2, 'i': 2, 'c': 1, 'e': 2, 'n': 2, 'w': 1, 'o': 1, 'd': 1, 'r': 1}
a -> {'a': 2, 'l': 2, 'i': 2, 'c': 1, 'e': 2, 'n': 2, 'w': 1, 'o': 1, 'd': 1, 'r': 1}
n -> {'a': 2, 'l': 2, 'i': 2, 'c': 1, 'e': 2, 'n': 3, 'w': 1, 'o': 1, 'd': 1, 'r': 1}
d -> {'a': 2, 'l': 2, 'i': 2, 'c': 1, 'e': 2, 'n': 3, 'w': 1, 'o': 1, 'd': 2, 'r': 1}
🟪 {'a': 2, 'l': 2, 'i': 2, 'c': 1, 'e': 2, 'n': 3, 'w': 1, 'o': 1, 'd': 2, 'r': 1}
"""
--------------------------------------------------------------------------------------

방법3 : get() + default값 사용
result = {}

for ch in word.lower():
  if ch.isalpha():
    result[ch] = result.get(ch, 0) + 1

print(result)

✅ 가장 긴 단어 찾기

    def longestWord(sentence): # "I am a Student"
        words = sentence.split() # ["I" "am" "a" "Student"]
        max_word = "" # 가장 길이가 긴 단어
        
        for word in words: 
            if len(word) > len(max_word):
                max_word = word
        return max_word



    data = ["I am a Student", "That elephant is big"]
    
    print([longestWord(d) for d in data])
    
    #출력결과 
    #['Student', 'elephant']

✅ 각 단어의 첫 글자만 대문자로 만들기

파이썬의 capitalize() 함수를 사용하지 않고 슬라이싱을 활용하는 방법입니다.

# *******************************
# 문장에서 각 단어 첫글자만 대문자 만들기
# ♣파이썬의 capitalize() 함수는 사용하지 않고 만들기

data = [
    "i am a PROGRAMMER",     # -> I Am A Programmer
    "THAT ELEPHANT IS BIG",  # -> That Elephant Is Big
]

def letterCapitalize(sentence):  # "i am a PROGRAMMER"
  words = sentence.lower().strip().split()  #["i" "am" "a" "programmer"]
  z = []
  
  for i in words:  # i <-  "programmer"
    i = i[0].upper() + i[1:]  # "P" + "rogrammer" => "Programmer"
    z.append(i)
    
  return " ".join(z)

[letterCapitalize(d) for d in data]
# ↓ 결과 ['I Am A Programmer', 'That Elephant Is Big']
    

profile
Hard Trying

0개의 댓글