문자열에서 함수를 쓴다?
함수는 숫자(수학)에서만 사용하는 것이 아니에요...
파이썬에서 함수는
입력된 A라는 재료에 k라는 양념을 뭍혀 B라는 요리를 만들어 내는
도구로 넓게 받아들여 주세요.
요리도구(함수) : k(양념) * A(재료) → B(요리)
메소드와 함수는 엄밀히는 다르지만 본 내용에서는 유사한 기능으로 생각해주세요...
추후 클래스에서 다시 설명해볼까 합니다.
문자열 메소드는 문자열 내용을 꾸밀 수도, 바꿀 수도, 찾을 수도 있습니다.
아래표는 문자열에서 사용하는 메소드입니다.
(자주 사용하는 메소드는 붉게 표시했습니다.)
메소드명 | 기능 or 효과 | 결과 |
startswith( ) | 문자열이 (괄호)안의 내용으로 시작하는지 판단 | True / False |
endswith( ) | 문자열이 (괄호)안의 내용으로 종료하는지 판단 | True / False |
find( ) | 문자열 내부에서 (괄호)안의 내용이 존재하는 위치를 앞에서부터 탐색 | 숫자 / -1(없음) |
rfind( ) | 문자열 내부에서 (괄호)안의 내용이 존재하는 위치를 뒤에서부터 탐색 | 숫자 / -1(없음) |
count( ) | 문자열 내부에서 (괄호)안의 내용이 몇 번 나오는지 셈 | 숫자 |
lstrip( ) | 문자열 가장 왼쪽의 공백을 제거 | |
rstrip( ) | 문자열 가장 오른쪽의 공백을 제거 | |
strip( ) | 문자열 양쪽의 공백을 제거 | |
isalpha( ) | 문자열이 알파벳(한글 포함)으로만 구성되는지 판단 | True / False |
isnumeric( ) | 문자열이 숫자로만 구성되는지 판단 | True / False |
isalnum( ) | 문자열이 알파벳 or 숫자로만 구성되는지 판단 | True / False |
replace(A,B) | 문자열 내용 중, 내용A → 내용B로 변경 | |
split( ) | 문자열을 (괄호)내용을 기준으로 리스트로 분리 | |
upper( ) | 문자열 내용을 모두 대문자로 변경 | |
lower( ) | 문자열 내용을 모두 소문자로 변경 | |
format( ) | 문자열 내용 중 {증괄호}에 차례로 (괄호)내용을 넣어주는 효과 |
그럼 문자열 메소드는 어떻게 사용할까?
문자열변수와 메소드 사이에 있는 "."(마침표)는
한국말로 "~에 or ~의"로 해석하면 받아들이기 쉽습니다.^^
해석하면, 문자열변수에 메소드를 적용합니다 + ( 괄호 )안의 내용을 반영해서요...
다음 예를 들어봅니다.
avengers = "아이언맨, 캡틴아메리카, 토르, 블랙위도우, 호크아이, 헐크"
# avengers[에="."] "호크아이"를 "스파이더맨"으로 바꿔줍니다.
avengers.replace("호크아이", "스파이더맨")
# avengers[에="."] "(쉼표)"가 몇개 존재하는지 세어줍니다.
avengers.count(",")
메소드 하나씩 테스트 해보기
__01. startswith / endswith
# hero라는 변수에 "spider-man"을 입력합니다.
hero = "spider-man"
# hero 변수 내용이 "spider"로 시작하면 True를 반환(보여줌)합니다.
hero.startswith("spider")
>> True
# hero 변수 내용이 "man"로 끝하면 True를 반환(보여줌)합니다.
hero.endswith("man")
>> True
__02. find / rfind
# find / rfind로 단어 위치 찾기 (주의: 첫글자는 0번으로 시작)
스페이스환타지 = "가자가자 이박사, 달려달려 가재발"
# "이박사" 단어가 시작되는 위치 찾기
스페이스환타지.find("이박사")
>> 5
# "가자" 단어 찾기 (가자 단어는 2번 중복되어 들어있음)
스페이스환타지.find("가자")
>> 0
# 뒤에서 부터 "달려달려" 단어를 탐색하고, 위치 찾기
스페이스환타지.rfind("달려달려")
>> 10
__03. count
# 노래가사에서 "피카"가 몇 번 반복될까?
포켓몬 = """자 이제 시작이야 (내꿈을) 내꿈을 위한 여행 (피카츄)
걱정따윈 없어 (없어) 내친구랑 함께니까 (피카피카)
처음 시작은 어색할지도 몰라 (몰라)
내친구 피카츄"""
포켓몬.count("피카")
>> 4
__04. lstrip / rstrip / strip
# 빨간토마토의 양쪽에 공백이 한칸씩 존재한다. 이것을 없애보자
과일채소 = " 빨간토마토 "
과일채소.lstrip()
>> '빨간토마토 '
과일채소.rstrip()
' 빨간토마토'
과일채소.strip()
'빨간토마토'
__05. isalpha / isnumeric / isalnum
name = "Parker"
name.isalpha()
>> True
lucky = "777"
lucky.isnumeric()
>> True
cell = "IPHONE14"
cell.isalnum()
>> True
robot = "Ironman Mark2"
name.isalnum()
>> False # 공백(띄어쓰기)은 False로 반환
robot = "Ironman-Mark2"
name.isalnum()
>> False # 특수문자는 False로 반환
__06. replace
나의고향 = "나의 살던 고향은 꽃피는산골"
나의고향.replace("꽃피는산골", "청송교도소")
>> '나의 살던 고향은 청송교도소'
__07. split
포켓몬 = "피카츄, 라이츄, 파이리, 꼬부기, 버터플, 야도란"
포켓몬.split(", ")
>> ['피카츄', '라이츄', '파이리', '꼬부기', '버터플', '야도란'] # 대괄호(리스트)로 분리됨
__08. upper / lower
cell_phone = "Samsung Galaxy 22"
cell_phone.upper()
>> 'SAMSUNG GALAXY 22' # 모든 알파벳이 대문자로 변경
cell_phone.lower()
>> 'samsung galaxy 22' # 모든 알파벳이 소문자로 변경
__09. format
format은 자주사용 하니 꼭 알아두세요
문자열 내용에 "{자리}"를 포함하고 있고,
format( 대상(자리0), 대상(자리1) )에서 자리에 해당하는 대상을 내용으로 채웁니다.
{0} : Apple 대입 ( 자리0에 해당 )
{2} : Xiaomi 대입 ( 자리2에 해당 )
{1} : Samsung 대입 ( 자리1에 해당 )
gold = "10 ea"
silver = "8 ea"
bronze = "5 ea"
"이번 올림픽 성과는 금메달:{0}, 은메달:{1}, 동메달:{2} 입니다.".format(gold, silver, bronze)
>> '이번 올림픽 성과는 금메달:10 ea, 은메달:8 ea, 동메달:5 ea 입니다.'
# 메달 갯수가 변경되면 gold, siver, bronze 내용만 바꾸면 되므로 편리함
정리
- 문자열 메소드(함수)는 문자열 내용을 편리하게 조작할 수 있음
- 사용형태는 "문자열변수.메소드(공백 or 특정문자)" 와 같음
- 해석방법은 문자열변수에 메소드를 적용한다. ( 괄호 ) 내용을 반영하면서
- 자주 사용하는 문자열 메소드는 [ rstrip, isnumeric, replace, split, format ] 등이 있음
'IT > 파이썬(Python)' 카테고리의 다른 글
[파이썬] 연산자 우선순위 (0) | 2022.03.20 |
---|---|
[파이썬] 기본 데이터 타입 3종 (0) | 2022.03.20 |
[파이썬] 쥬피터 노트북 실행경로 내맘대로하기 (0) | 2022.03.15 |
[파이썬] 반올림 함수 만들어 쓰기 (0) | 2022.03.13 |
[파이썬] 쥬피터 노트북을 설치해보자 (Jupyter Notebook) (0) | 2022.03.12 |