-
[코딩도장] day13. 문자열 응용하기(1/2) - 문자열 메서드(replace(), split(), join(), strip())IT/파이썬 2020. 8. 27. 00:40
■ 들어가기
- 파이썬 코딩 도장 (남재윤/길벗). 을 공부하며 정리하는 블로그
▶ Unit24. 문자열 응용하기
- 24.1 문자열 조작하기
- 24.2 문자열 서식 지정자와 포매팅 사용하기
- 리스트 : 요소 여러 개가 연속적으로 이어져 있는 시퀀스 자료형
- 문자열 : 문자 여러 개가 연속적으로 이어져 있는 시퀀스 자료형
(시퀀스 자료형? : 값이 연속적으로 이어진 자료형, ex: 리스트, 튜플, range, 문자열)
>> 24.1 문자열 조작하기 <<
- 파이썬에서 제공하는 문자열 메서드 이용
1. 문자열 바꾸기 - replace()
- 문자열 안의 문자열을 다른 문자열로 변경
- 문자열 자체를 변경하는 것이 아니라, 변경된 결과를 return
- 사용법 : replace('바꿀문자열', '새문자열')
>>> a = 'Hello, world!'
>>> a
'Hello, world!'
>>> a.replace('world', 'Python') # 문자열 변경, but 원본은 유지
'Hello, Python!'
>>> a
'Hello, world!'
>>> a = a.replace('world', 'Python') # 문자열 변경 후 원본 변경
>>> a
'Hello, Python!'2. 문자 바꾸기
- 사용법:
1) str.maketrans('바꿀문자', '새문자') 로 변환테이블 생성
2) translate(테이블) 로 문자를 변경
- str.maketrans() 로 생성된 테이블은 key-value 쌍의 딕셔너리({key:value} 형태)로 저장되며, ASCII 값으로 저장됨
- 원본은 변경되지 않으며 변경된 값만 return
>>> table = str.maketrans('aeiou', '12345') # 변환 테이블 생성
>>> table
{97: 49, 101: 50, 105: 51, 111: 52, 117: 53} # 딕셔너리 형태로 key-value값 저장
>>> a = 'apple'
>>> a
'apple'
>>> a.translate(table) # 문자열 변경
'1ppl2'
>>> a
'apple' # 문자열 변경 후 원본 변경3. 문자열 분리하기
- 사용법1: split()
- 공백을 기준으로 문자열을 분리하여 리스트로 생성
>>> a = 'apple pear grape pineapple orange'
>>> a
'apple pear grape pineapple orange'
>>> a.split()
['apple', 'pear', 'grape', 'pineapple', 'orange']
>>> a
'apple pear grape pineapple orange'- 사용법2: split('기준문자열')
- 기준 문자열로 문자열을 분리하여 리스트로 생성
>>> b = 'apple, pear, grape, pineapple, orange'
>>> b
'apple, pear, grape, pineapple, orange'
>>> b.split(',')
['apple', ' pear', ' grape', ' pineapple', ' orange']4. 구분자 문자열과 문자열 리스트 연결하기
- 사용법: join(리스트)
- 구분자 문자열과 문자열 리스트의 요소를 연결하여 새로운 문자열로 생성
>>> b
'apple, pear, grape, pineapple, orange'
>>> c = b.split(',') # 쉼표(',')로 문자열 분리
>>> c
['apple', ' pear', ' grape', ' pineapple', ' orange'] # 실제 문자열 사이는 ', ' 과 같이 "쉼표+공백"여서 공백은 제거되지 않음
>>> c = b.split(', ')
>>> c
['apple', 'pear', 'grape', 'pineapple', 'orange']
>>> ' '.join(c) # 각 문자열 사이에 공백(' ')이 들어가도록 생성
'apple pear grape pineapple orange'
>>> '-'.join(c) # 각 문자열 사이에 마이너스('-')가 들어가도록 생성
'apple-pear-grape-pineapple-orange'5. 소문자를 대문자로 바꾸기
- 사용법: upper()
>>> 'python'.upper()
'PYTHON'6. 대문자를 소문자로 바꾸기
- 사용법: lower()
>>> 'PYTHON'.lower()
'python'7. 공백 삭제하기
- lstrip() : 문자열에서 왼쪽에 있는 연속된 모든 공백을 삭제
- rstrip() : 문자열에서 오른쪽에 있는 연속된 모든 공백을 삭제
- strip() : 문자열에서 양쪽에 있는 연속된 모든 공백을 삭제
>>> d = ' Python '
>>> d
' Python '
>>> d.lstrip() # 왼쪽 공백 삭제
'Python '
>>> d.rstrip() # 오른쪽 공백 삭제
' Python'
>>> d.strip() # 양쪽 공백 삭제
'Python'8. 특정 문자 삭제하기
- lstrip('삭제할 문자들') : 삭제할 문자들을 문자열 형태로 넣어 문자열 왼쪽에 있는 해당 문자를 삭제
- rstrip('삭제할 문자들') : 삭제할 문자들을 문자열 형태로 넣어 문자열 오른쪽에 있는 해당 문자를 삭제
- strip('삭제할 문자들') : 삭제할 문자들을 문자열 형태로 넣어 문자열 양쪽에 있는 해당 문자를 삭제
>>> e = ', python.'
>>> e
', python.'
>>> e.lstrip(',.') # 왼쪽 지정 문자 삭제
' python.'
>>> e.rstrip(',.') # 오른쪽 지정 문자 삭제
', python'
>>> e.strip(',.') # 양쪽 지정 문자 삭제
' python'9. 문자열 정렬하기
- ljust(길이) : 문자열을 지정된 '길이'로 만든 뒤, 왼쪽으로 정렬하며 남는 공간은 공백으로 채움
- rjust(길이) : 문자열을 지정된 '길이'로 만든 뒤, 오른쪽으로 정렬하며 남는 공간은 공백으로 채움
- center(길이) : 문자열을 지정된 '길이'로 만든 뒤, 가운데로 정렬하며 남는 공간은 공백으로 채움
( 남는 공간은 왼쪽 > 오른쪽 우선순위로 채워짐 )
>>> f = 'python'
>>> f
'python'
>>> f.ljust(10) # 10의 길이에 왼쪽 정렬 후 공백 채움
'python '
>>> f.rjust(10) # 10의 길이에 오른쪽 정렬 후 공백 채움
' python'
>>> f.center(10) # 10의 길이에 가운데 정렬 후 공백 채움
' python '10. 메서드 체이닝
- 문자열 메서드는 처리한 결과를 반환하게 되어 있으며, 메서드를 계속 연결해서 호출하는 "메서드 체이닝" 가능
- 메서드 체이닝 : 메서드를 체인과 같이 줄줄이 연결한다는 의미
- 예제
1) 문자열을 오른쪽 정렬 후 대문자로 변환
2) 문자열 입력받고 '공백'을 기준으로 자르기
>>> 'python'.rjust(10).upper()
' PYTHON'
>>> input().split()
a b c d e
['a', 'b', 'c', 'd', 'e']11. 문자열 왼쪽에 0 채우기
- 사용법: zfill(길이)
- 지정된 '길이'에 맞춰서 문자열의 왼쪽에 0을 채움 (zero fill 의미)
- 문자열의 길이보다 지정된 '길이'가 짧다면 아무것도 채우지 않음
- 일반적으로 zfill은 숫자를 일정 자릿 수로 맞추고 앞자리는 0으로 채울 시 사용함
>>> '35'.zfill(4) # 숫자 앞에 0을 채움
'0035'
>>> '11111'.zfill(2) # 문자열의 길이보다 짧은 '길이'는 수행하지 않음
'11111'
>>> '3.5'.zfill(6) # 숫자 앞에 0을 채움
'0003.5'
>>> 'hello'.zfill(10) # 문자열 앞에 0을 채움
'00000hello'12. 문자열 위치 찾기
- 사용법1: find('찾을 문자열')
- 문자열에서 특정 문자열을 찾아서 인덱스를 반환하고, 문자열이 없으면 -1을 반환
- 왼쪽부터 문자열을 찾으며, 같은 문자열이 여러 개인 경우 처음 찾은 문자열의 인덱스를 반환
- 예제
>>> a = 'apple pineapple'
>>> a
'apple pineapple'
>>> a.find('pl')
2
>>> a.find('xy')
-1- 사용법2: rfind('찾을 문자열')
- 오른쪽에서부터 특정 문자열을 찾아 인덱스를 반환, 문자열이 없으면 -1 반환
- 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환
- 예제
>>> a
'apple pineapple'
>>> a.rfind('pl')
12
>>> a.rfind('xy')
-113. 문자열 위치 찾기
- 사용법1: index('찾을 문자열')
- 왼쪽에서부터 특정 문자열을 찾아서 인덱스를 반환
- 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환, 문자열이 없으면 에러를 발생
- 예제
>>> a
'apple pineapple'
>>> a.index('pl')
2
>>> a.index('xy')
Traceback (most recent call last):
File "<pyshell#153>", line 1, in <module>
a.index('xy')
ValueError: substring not found- 사용법2: rindex('찾을 문자열')
- 오른쪽에서부터 특정 문자열을 찾아서 인덱스를 반환
- 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환, 문자열이 없으면 에러를 발생
- 예제
>>> a
'apple pineapple'
>>> a.rindex('pl')
12
>>> a.rindex('xy')
Traceback (most recent call last):
File "<pyshell#158>", line 1, in <module>
a.rindex('xy')
ValueError: substring not found14. 문자열 개수 세기
- 사용법: count('문자열')
- 현재 문자열에서 특정 문자열이 몇 번 나오는지 확인
- 찾을 문자열이 없는 경우 0 반환
- 예제
>>> a
'apple pineapple'
>>> a.count('pl')
2
>>> a.count('xy')
0● 요약 ●
1. 파이썬에서 제공하는 메서드가 정말 많구나!
2. 기존 C/C++에서 문자열 조작은 날 것을 그대로 만지는 거였구나....
3. 파이썬에서 제공하는 메서드 적극 활용하자!!
'IT > 파이썬' 카테고리의 다른 글
[코딩도장] day15. 딕셔너리 응용하기(1/2) - setdefault(), update(), pop(), popitem() (0) 2020.08.30 [코딩도장] day14. 문자열 응용하기(2/2) (0) 2020.08.28 [코딩도장] day12. 2차원 리스트 - 반복문으로 리스트 만들기 (0) 2020.08.24 [코딩도장] day11. 2차원 리스트 (0) 2020.08.23 [코딩도장] day10. 리스트 map, 튜플 (0) 2020.08.23