* 문자열을 처리하기 위해서는 문자열 분리, 불필요한 문자열 삭제, 문자열 연결 등을 할 수 있어야 함.
1. split() : 문자열 분리
- 문자열을 부분 문자열로 나누고 싶을 때 이용하는 메서드
str.split([sep]) # sep : 구분자(separator), 대괄호([])는 생략 가능
- 예시
"에스프레소,아메리카노,카페라테,카푸치노".split(',') # 콤마를 기준으로 단어 분리
"에스프레소 아메리카노 카페라테 카푸치노".split(' ') # 공백을 기준으로 단어 분리
"에스프레소.아메리카노.카페라테.카푸치노".split('.') # .을 기준으로 단어 분리
# ['에스프레소', '아메리카노', '카페라테', '카푸치노']
# maxsplit을 지정해 문자열 분리
phone_number = "+82-01-2345-6789"
phone_number.split('-',maxsplit=2) # 앞에서부터 두 개의 '-'까지만 문자열을 나눔
# ['+82', '01', '2345-6789']
2. strip() : 필요없는 문자열 삭제
- 앞뒤 공백 혹은 개행문자와 같이 불필요한 부분을 지워야 할 때 사용
- 문자열(str)의 앞과 뒤에서 시작해서 지정한 문자(chars) 외의 다른 문자를 만날 때까지 지정한 문자(chars)를 모두 삭제한 문자열 반환
- 지정한 문자와 일치하는 것이 없으면 문자열을 그대로 반환
- 지정한 문자 없이 str.strip() 수행 시 문자열 앞 뒤의 모든 공백과 개행문자를 삭제한 후 문자열 반환
str.strip([chars]) # chars: 문자
- 예시
tempText = ' Python '
tempText.strip()
#'Python'
tempText = 'aaaaabbPythonbbaaaaaa'
result = tempText.strip('a')
result.strip('b')
# 'Python'
tempText.strip('ab') # 이렇게 해도 결과는 같다(지우고자 하는 문자 모두 지정 후 한 번에 제거)
# 'Python'
# 지우고자 하는 문자를 여러 개 지정할 때 순서는 상관 없음('ba'도 가능)
tempText = '\n Python \n\n'
tempText.strip(' \n')
# 'Python'
# 공백과 개행문자(\n)를 지우는 방법(역시나 공백과 개행문자 순서는 상관 없다)
3. join() : 문자열 연결
- 리스트의 모든 항목을 하나의 문자열로 만들 때 사용하는 메서드
- 문자열을 항목으로 갖는 시퀀스의 항목 사이에 구분자 문자열을 모두 넣은 후 문자열로 반환한다.
+ 시퀀스 : 리스트나 튜플 같이 여러 데이터를 순서대로 담고 있는 나열형 데이터
str.join(seq) # seq : 시퀀스
- 예시
address_list = ['서울시', '서초구', '반포대로', '201(반포동)']
# 리스트의 각 값을 모두 연결해서 하나의 텍스트로
a = " " # 구분자 문자열을 공백으로 연결
a.join(address_list) #a에 지정하지 않고 " ".join(address_list) 해도 됨
# '서울시 서초구 반포대로 201(반포동)'
** 리스트가 아닌 문자열과 문자열은 더하기 연산자(+)로 연결하면 됨!
name1 = '철수'
name2 = '영미'
hello = '님, 주소와 전화 번호를 입력해 주세요'
print(name1+hello)
print(name2+hello)
# 철수님, 주소와 전화 번호를 입력해 주세요
# 영미님, 주소와 전화 번호를 입력해 주세요
4. find() : 문자열 찾기
- 문자열의 위치값을 반환
str.find(search_str) # search_str : 검색 문자열
- 예시
str_f = 'Python code.'
print("찾는 문자열의 위치:", str_f.find('Python'))
print("찾는 문자열의 위치:", str_f.find('code'))
print("찾는 문자열의 위치:", str_f.find('n'))
print("찾는 문자열의 위치:", str_f.find('java'))
# 찾는 문자열의 위치: 0
# 찾는 문자열의 위치: 7
# 찾는 문자열의 위치: 5
# 찾는 문자열의 위치: -1 # -1: 해당되는 문자 없음
** 여기서 단어(Python, code)는 문자열 시작 위치를 반환한다. (P : 0번째, c : 7번째)
5. count() : 찾고자 하는 문자열의 횟수 반환
- 만약 찾을 문자열이 없으면 0으로 반환
- start와 end로 검색 범위 지정 가능
str.count(search_str)
str.count(search_str, start)
str.count(search_str, start, end)
- 예시
str_c = "Python is powerful. Python is easy to learn. Python is open"
print("Python의 갯수는?", str_c.count("Python"))
print("powerful의 갯수는?", str_c.count("powerful"))
print("Java의 갯수는?", str_c.count("Java"))
# Python의 갯수는? 3
# powerful의 갯수는? 1
# Java의 갯수는? 0
6. startswith(), endswith() : 각 문자열이 지정된 문자열로 시작하는지 또는 끝나는지 검사할 때 사용
- 지정된 문자열로 시작되면 True를, 그렇지 않으면 False를 반환한다.
- start와 end로 범위 지정할 수 있음
str.startswith(prefix)
str.startswith(prefix, start)
str.startswith(prefix, start, end)
str.endswith(suffix)
str.endswith(suffix, start)
str.endswith(suffix, start, end)
- 예시
str_c = "Python is powerful. Python is easy to learn. Python is open."
print("Python으로 시작?", str_c.startswith('Python'))
print("is으로 시작?", str_c.startswith('is'))
print(".으로 끝?", str_c.endswith('.'))
print("!으로 끝?", str_c.endswith('!'))
# Python으로 시작? True
# is으로 시작? False
# .으로 끝? True
# !으로 끝? False
7. replace() : 문자열 바꾸기
- 문자열에서 지정한 문자열을 찾아서 바꾸는 메서드
str.replace(old, new[, count])
# 지정한 문자열(old)을 찾아서 새로운 문자열(new)로 바꿈
# count는 문자열에서 지정된 문자열을 찾아서 바꾸는 횟수. 지정하지 않으면 문자열 전체에서 찾아서 바꿈
- 예시
str_a = 'Python is fast. Python is friendly. Python is open.'
# Python을 IPython으로 바꾸기
print(str_a.replace('Python', 'IPython'))
# IPython is fast. IPython is friendly. IPython is open.
str_b = '[Python][is][fast]'
str_b1 = str_b.replace('[', '') # 문자열에서 특정 문자('[') 제거하는 효과
str_b2 = str_b1.replace(']', ' ') # 결과 문자열에서 다시 ']' 제거
result = str_b2.rstrip() # rstrip : 문장 뒤 공백을 지우기 위해 사용
print(result)
# Python is fast
'Python' 카테고리의 다른 글
딕셔너리 (0) | 2024.01.06 |
---|---|
리스트 함수 메서드 정리 (0) | 2024.01.06 |
리스트, 튜플의 유사한 점 및 차이점 (0) | 2024.01.05 |
파이썬 변수명 규칙 (0) | 2024.01.05 |
논리 연산자, 비교 연산자 (0) | 2024.01.05 |