| 문법 | 설명 |
|---|---|
| a[시작번호:끝번호] | 문자열의 시작번호 시작번호 이상부터 끝번호 미만 |
| a[:끝번호] | 문자열의 처음부터 끝번호 미만까지 |
| a[시작번호:] | 문자열의 시작번호 부터 끝까지 |
| 문자열.find('단어') | 문자열의 특정 단어의 인덱스 번호 출력 |
| 문자열.index('단어') | 문자열의 특정 단어의 인덱스 번호 출력 |
| 문자열.count('단어') | 문자열에서 특정 단어가 몇 번 나오는지 출력 |
| 문자열.split() | 문자열을 어절별로 분리하여 리스트로 구성 |
| 문자열.replace('단어1', '단어2') | 문자열에서 단어1을 단어2로 변경 |
| 문자열.strip() | 문자열에서 양쪽 공백을 제거 |
| 문자열.upper() | 문자열을 전부 대문자로 변환 |
| 문자열.lower() | 문자열을 전부 소문자로 변환 |
| 문자열.title() | 첫번째 철자만 대문자로 변환 나머지 소문자로 변환 |
데이터 분석에서 원석과 같은 문자 정보를 가공하는 중요한 기술
요리를 할 때 재료를 칼로 손질하듯이, 문자열도 필요한 부분만 잘라내어 사용할 수 있음
아래의 문자열에서 "파이썬"이라는 단어만 슬라이싱 하시오
a = "회사업무가파이썬으로자동화되고있습니다"
print(a[5:8]) # 파이썬
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:])
네이버에서 한국 야구 순위 데이터를 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를 사용
다음 문자열에서 '의미' 라는 단어가 몇번째 있는지 검색
a = '기상 후 1시간을 얼마나 의미 있게 보내느냐에 따라 그날 하루가 결정됩니다'
print(a.find('의미')) # print(a.index('의미')) #14
라이나 생명의 보험 상담사들이 상담 내용을 금융감독원에 보고할 때, 잘못된 상담 내용을 자동으로 찾아내는 시스템에 활용됨
# 문제. 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]
스티브 잡스 연설문 jobs_korea.txt를 읽어서 data 변수에 담으시오
jobs = open("c:\\data\\jobs_korea.txt", encoding="utf8")
print(jobs.read())
encoding: 컴퓨터가 인식할 수 있는 문자로 변환
utf8 -> charset(문자셋) (ex. 한글, 일본어, 중국어)
스티브 잡스 연설문에는 '용기' 라는 단어가 있는지 확인하시오
jobs = open("c:\\data\\jobs_korea.txt", encoding="utf8")
jobs_text = jobs.read()
print(jobs_text.find('용기')) # 5517
스티브 잡스 연설문에 '한달' 이라는 단어가 있는지 확인하시오
jobs = open("c:\\data\\jobs_korea.txt", encoding="utf8")
jobs_text = jobs.read()
print(jobs_text.find('한달')) # -1
없으면 -1이라고 나옴 --> 데이터 없음
문자열에서 특정 단어가 몇 번 출현하는지 세는 함수
스티브 잡스 연설문에서 '직관' 이라는 단어가 몇 번 나오는지 카운트하시오
jobs = open("c:\\data\\jobs_korea.txt", encoding="utf8")
data = jobs.read()
print(data.count('직관'))
문자열을 특정 구분자로 나눠서 리스트로 반환하는 함수
a = '아무것도 하지 않으면, 아무 일도 일어나지 않는다'
b = a.split()
print(b)
print(b[0])
# ['아무것도', '하지', '않으면,', '아무', '일도', '일어나지', '않는다']
# 아무것도
위의 a 리스트에서 '아무' 라는 단어를 '어떤' 으로 변경하시오
a = '아무것도 하지 않으면, 아무 일도 일어나지 않는다'
b = a.split()
b[3] = '어떤' # 리스트의 3번째 요소를 '어떤'으로 변경
print(b)
# ['아무것도', '하지', '않으면,', '어떤', '일도', '일어나지', '않는다']
b 리스트에 담긴 단어들을 문자열로 출력하시오
c = ' '.join(b) # 구분자.join(리스트)
print(c)
# 아무것도 하지 않으면, 어떤 일도 일어나지 않는다
split: 문자열 --> 리스트로 변환join: 리스트 --> 문자열로 변환d = '핑계를 찾을지... 핑계를 찾을지... 핑계를 찾을지... 핑계를 찾을지...'
a = d.split()
a[2] = '방법을'
a[6] = '길을'
b = ' '.join(a)
print(b)
# 핑계를 찾을지... 방법을 찾을지... 핑계를 찾을지... 길을 찾을지...
a = '아무것도 하지 않으면, 아무 일도 일어나지 않는다'
b = a.split()
b[0] = '어떤것도'
b[3] = '어떤'
c = ' '.join(b)
print(c)
# 어떤것도 하지 않으면, 어떤 일도 일어나지 않는다
a = '아무것도 하지 않으면, 아무 일도 일어나지 않는다'
result = a.replace('아무', '어떤')
print(result)
a = '핑계를 찾을지... 핑계를 찾을지... 핑계를 찾을지... 핑계를 찾을지...'
result = a.replace('핑계', '방법')
print(result)
# 방법를 찾을지... 방법를 찾을지... 방법를 찾을지... 방법를 찾을지...
문자열 strip() 함수는 문자 양쪽에 있는 불필요한 문자를 제거할 때 사용합니다.
strip 함수의 종류
strip() → 양쪽 공백 제거
rstrip() → 오른쪽 공백 제거
lstrip() → 왼쪽 공백 제거
a = ' 당신이 정말 좋아하는 일을 하세요. - 스티브 잡스 '
print(a.strip())
print(a.lstrip())
print(a.rstrip())
#당신이 정말 좋아하는 일을 하세요. - 스티브 잡스
#당신이 정말 좋아하는 일을 하세요. - 스티브 잡스
# 당신이 정말 좋아하는 일을 하세요. - 스티브 잡스
a 리스트의 요소들을 출력하는데 숫자와 마침표 등을 잘라내고
순수하게 문자만 출력되게 하시오
a = ['1.끝내주게 숨쉬기.', '2.간지나게 자기!', '3.작살나게 밥먹기?']
for i in a:
print(i.strip('123.!?'))
# 끝내주게 숨쉬기
# 간지나게 자기
# 작살나게 밥먹기
다음 문자열에서 보험 상담사가 잘못 사용한 단어인 '한달'이 몇번 출현하는지 출력하시오
a = '보험 실효 개시일은, 보험 계약 이후 한달, 이후 입니다. 한달! 입니다.'
a2 = a.split()
cnt = 0
for i in a2:
if i.strip(',!.') == '한달':
cnt += 1
print(cnt) # 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: 문자열 치환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