[Python] 문자열 함수 총정리

·2025년 6월 25일

Python

목록 보기
23/33

🔸주요 문자열 함수 정리표

문법설명
a[시작번호:끝번호]문자열의 시작번호 시작번호 이상부터 끝번호 미만
a[:끝번호]문자열의 처음부터 끝번호 미만까지
a[시작번호:]문자열의 시작번호 부터 끝까지
문자열.find('단어')문자열의 특정 단어의 인덱스 번호 출력
문자열.index('단어')문자열의 특정 단어의 인덱스 번호 출력
문자열.count('단어')문자열에서 특정 단어가 몇 번 나오는지 출력
문자열.split()문자열을 어절별로 분리하여 리스트로 구성
문자열.replace('단어1', '단어2')문자열에서 단어1을 단어2로 변경
문자열.strip()문자열에서 양쪽 공백을 제거
문자열.upper()문자열을 전부 대문자로 변환
문자열.lower()문자열을 전부 소문자로 변환
문자열.title()첫번째 철자만 대문자로 변환 나머지 소문자로 변환

✔️ 예제. 문자열 슬라이싱 (칼질)

데이터 분석에서 원석과 같은 문자 정보를 가공하는 중요한 기술
요리를 할 때 재료를 칼로 손질하듯이, 문자열도 필요한 부분만 잘라내어 사용할 수 있음

예제1. 기본 슬라이싱

아래의 문자열에서 "파이썬"이라는 단어만 슬라이싱 하시오

a = "회사업무가파이썬으로자동화되고있습니다"
print(a[5:8])  # 파이썬

문제1. 끝부분 슬라이싱

a 문자열에서 "자동화되고있습니다" 만 출력하시오

a = "회사업무가파이썬으로자동화되고있습니다"
print(a[-9:])	# print(a[10:])

📌

# db에 장애가 났을 때 반드시 열어봐야하는 alert log file을 파이썬으로 불러오시오

oracle_alert = open("c:\\data\\alert_log.txt")
oracle_text = oracle_alert.read()
print(oracle_text)
# 문제. 오라클 장애가 가장 중요한 부분이 alert log file에 뒷부분의
# 최신 정보로 존재하는 경우가 많은데 alert log file의 뒷부분 문자들을 출력하시오

oracle_alert = open("c:\\data\\alert_log.txt")
oracle_text = oracle_alert.read()
print(oracle_text[-100:])

문제2. 웹 데이터 가져오기

네이버에서 한국 야구 순위 데이터를 2024년도 데이터를 가져오시오

import pandas as pd

url = "https://sports.news.naver.com/kbaseball/record/index?category=kbo&year=2024"
naver = pd.read_html(url)[0]
print(naver)

✔️ 예제. find와 index 함수

문자열에서 특정 단어나 철자의 위치를 검색할 때 find와 index를 사용

예제1. find 함수 활용

다음 문자열에서 '의미' 라는 단어가 몇번째 있는지 검색

a = '기상 후 1시간을 얼마나 의미 있게 보내느냐에 따라 그날 하루가 결정됩니다'
print(a.find('의미'))	# print(a.index('의미'))		#14

현업 활용 사례

라이나 생명의 보험 상담사들이 상담 내용을 금융감독원에 보고할 때, 잘못된 상담 내용을 자동으로 찾아내는 시스템에 활용됨

  • ❌ "보험 실효 개시일이 한달뒤부터입니다"
  • ✅ "보험 실효 개시일이 30일 뒤 부터입니다"
# 문제. alert_log.txt에서 ORA- 로 시작하는 메세지가 몇번째부터 시작하는지 출력하시오

oracle_alert = open("c:\\data\\alert_log.txt")
oracle_text = oracle_alert.read()
print(oracle_text.find('ORA'))	#34

oracle_alert = open("c:\\data\\alert_log.txt")
oracle_text = oracle_alert.read()
oracle_text[5112:5212]

문제1. 텍스트 파일 읽기

스티브 잡스 연설문 jobs_korea.txt를 읽어서 data 변수에 담으시오

jobs = open("c:\\data\\jobs_korea.txt", encoding="utf8")
print(jobs.read())

encoding: 컴퓨터가 인식할 수 있는 문자로 변환
utf8 -> charset(문자셋) (ex. 한글, 일본어, 중국어)

문제2. 단어 검색

스티브 잡스 연설문에는 '용기' 라는 단어가 있는지 확인하시오

jobs = open("c:\\data\\jobs_korea.txt", encoding="utf8")
jobs_text = jobs.read()
print(jobs_text.find('용기'))	# 5517

문제3. 금칙어 검색

스티브 잡스 연설문에 '한달' 이라는 단어가 있는지 확인하시오

jobs = open("c:\\data\\jobs_korea.txt", encoding="utf8")
jobs_text = jobs.read()
print(jobs_text.find('한달'))	# -1

없으면 -1이라고 나옴 --> 데이터 없음


✔️ 예제. count 함수

문자열에서 특정 단어가 몇 번 출현하는지 세는 함수

예제1. 단어 횟수 세기

스티브 잡스 연설문에서 '직관' 이라는 단어가 몇 번 나오는지 카운트하시오

jobs = open("c:\\data\\jobs_korea.txt", encoding="utf8")
data = jobs.read()
print(data.count('직관'))

✔️ 예제. split 함수

문자열을 특정 구분자로 나눠서 리스트로 반환하는 함수

예제1. 기본 split 사용법

a = '아무것도 하지 않으면, 아무 일도 일어나지 않는다'
b = a.split()
print(b)
print(b[0])

# ['아무것도', '하지', '않으면,', '아무', '일도', '일어나지', '않는다']
# 아무것도

예제2. 리스트 요소 수정

위의 a 리스트에서 '아무' 라는 단어를 '어떤' 으로 변경하시오

a = '아무것도 하지 않으면, 아무 일도 일어나지 않는다'
b = a.split()
b[3] = '어떤'		# 리스트의 3번째 요소를 '어떤'으로 변경
print(b)

# ['아무것도', '하지', '않으면,', '어떤', '일도', '일어나지', '않는다']

예제3. 🔸join 함수

b 리스트에 담긴 단어들을 문자열로 출력하시오

c = ' '.join(b)     # 구분자.join(리스트)
print(c)

# 아무것도 하지 않으면, 어떤 일도 일어나지 않는다
  1. split: 문자열 --> 리스트로 변환
  2. join: 리스트 --> 문자열로 변환

문제1. 부분 단어 변경

d = '핑계를 찾을지... 핑계를 찾을지... 핑계를 찾을지... 핑계를 찾을지...'
a = d.split()
a[2] = '방법을'
a[6] = '길을'
b = ' '.join(a)
print(b)

# 핑계를 찾을지... 방법을 찾을지... 핑계를 찾을지... 길을 찾을지...

문제2. 반복문과 조건문 활용

a = '아무것도 하지 않으면, 아무 일도 일어나지 않는다'
b = a.split()
b[0] = '어떤것도'
b[3] = '어떤'
c = ' '.join(b)
print(c)

# 어떤것도 하지 않으면, 어떤 일도 일어나지 않는다

a = '아무것도 하지 않으면, 아무 일도 일어나지 않는다'
result = a.replace('아무', '어떤')
print(result)

문제3. 🔸replace 함수 활용

a = '핑계를 찾을지... 핑계를 찾을지... 핑계를 찾을지... 핑계를 찾을지...'
result = a.replace('핑계', '방법')
print(result)

# 방법를 찾을지... 방법를 찾을지... 방법를 찾을지... 방법를 찾을지...

예제. strip 함수

문자열 strip() 함수는 문자 양쪽에 있는 불필요한 문자를 제거할 때 사용합니다.

strip 함수의 종류
strip() → 양쪽 공백 제거

rstrip() → 오른쪽 공백 제거

lstrip() → 왼쪽 공백 제거

예제1. 기본 사용법

a = '    당신이 정말 좋아하는 일을 하세요. - 스티브 잡스    '
print(a.strip())
print(a.lstrip())
print(a.rstrip())

#당신이 정말 좋아하는 일을 하세요. - 스티브 잡스
#당신이 정말 좋아하는 일을 하세요. - 스티브 잡스    
#    당신이 정말 좋아하는 일을 하세요. - 스티브 잡스

예제2. 특정 문자 제거

a 리스트의 요소들을 출력하는데 숫자와 마침표 등을 잘라내고
순수하게 문자만 출력되게 하시오

a = ['1.끝내주게 숨쉬기.', '2.간지나게 자기!', '3.작살나게 밥먹기?']

for i in a:
    print(i.strip('123.!?'))
    
# 끝내주게 숨쉬기
# 간지나게 자기
# 작살나게 밥먹기

문제1. 금칙어 카운트

다음 문자열에서 보험 상담사가 잘못 사용한 단어인 '한달'이 몇번 출현하는지 출력하시오

a = '보험 실효 개시일은, 보험 계약 이후 한달, 이후 입니다. 한달! 입니다.'
a2 = a.split()
cnt = 0

for i in a2:
    if i.strip(',!.') == '한달':
        cnt += 1
print(cnt)		# 2

문제2. 여러 금칙어 카운트

다음 문자열에서 '한달'과 '효과'가 몇번 출현하는지 출력하시오

a = '보험 효과! 실효 개시일은, 보험 계약 이후 한달, 이후 입니다. 한달! 입니다.'
a2 = a.split()
cnt = 0

for i in a2:
    if i.strip(',!.') in ['한달', '효과']:
        cnt += 1
print(cnt)

in [ ]


핵심 정리

문자열 함수는 데이터 전처리와 텍스트 분석에서 핵심적인 역할

  • 슬라이싱: 필요한 부분만 추출
  • find/index: 특정 단어의 위치 찾기
  • count: 단어 출현 빈도 계산
  • split/join: 문자열과 리스트 간 변환
  • strip: 불필요한 문자 제거
  • replace: 문자열 치환

⭐ DB 관리 자동화 스크립트 기본 코드

while True:
    print('dba 작업을 편하게 하기 위한 자동화 스크립트')
    print('1. alert log file 의 뒷부분을 보려면 1번을 누르세요')
    print('2. alert log file에서 오라클 에러번호의 갯수를 확인하려면 2번을')
    print('9. 종료를 하려면 9번을 누르세요')

    num = input('번호를 입력하세요')

    if num == '1':
        oracle_alert = open("c:\\data\\alert_log.txt")
        oracle_text = oracle_alert.read()
        print(oracle_text[-900:])
    elif num == '2':
        error_num = input('오라클 에러번호를 입력하시오: ')
        oracle_alert = open("c:\\data\\alert_log.txt")
        oracle_text = oracle_alert.read()
        print(oracle_text.count(error_num), '번 발생하였습니다.')
        print('=============================================')
    elif num == '9':
        break
    else:
        print('잘못된 번호입니다.')

# ORA-00313 에러가 오라클 alert log file에서 몇번 발생했는지 확인하시오

oracle_alert = open("c:\\data\\alert_log.txt")
oracle_text = oracle_alert.read()
print(oracle_text.count('ORA-00313'))	#41

error_num = input('오라클 에러번호를 입력하시오: ')
oracle_alert = open("c:\\data\\alert_log.txt")
oracle_text = oracle_alert.read()
print(oracle_text.count(error_num))	#41

0개의 댓글