Unit 24
문자열 응용하기
1. 문자열 조작하기
1-1. 문자열 바꾸기
- replace('바꿀문자열', '새문자열')은 문자열 안의 문자열을 다른 문자열로 바꿔준다.(문자열 자체는 변경하지 않고 바뀐 결과만 반환)
>>> 'Hello, world!'.replace('world', 'Python') 'Hello, Python!'
- 만약 바뀐 결과를 유지하고 싶다면 문자열이 저장된 변수에 replace를 사용한 뒤, 다시 변수에 할당해주면 된다.
>>> s = 'Hello, world!' >>> s = s.replace('world!', 'Python') # replace로 변수에 할당 >>> s 'Hello, Python'
1-2. 문자 바꾸기
- translate는 문자열 안의 문자를 다른 문자로 바꿔준다.
- 먼저 str.maketrans('바꿀문자', '새문자')로 변환 테이블을 만든다.
- translate(테이블)을 사용하면 문자를 바꾼 뒤 결과를 반환한다.
-
- 문자열 'apple'에서 a → 1, e → 2, i → 3, o → 4, u → 5 로 바꿔주었다.>>> table = str.maketrans('aeiou', '12345') >>> 'apple'.translate(table) '1ppl2'
1-3. 문자열 분리하기
- split()은 공백을 기준으로 문자열을 분리하여 리스트로 만들어준다. → 지금까지 input으로 문자열을 입력받은 뒤 리스트로 만든 메서드가 바로 이 split이다.
>>> 'apple pear grape pineapple orange'.split() ['apple', 'pear', 'grape', 'pineapple', 'orange']
- split('기준문자열') 과 같이 기준 문자열을 지정하면 기준 문자열로 문자열을 분리한다.
- ', ' 로 문자열을 분리하여 각 단어만 리스트로 만들었다.>>> 'apple, pear, grape, pineapple, orange'.split(', ') ['apple', 'pear', 'grape', 'pineapple', 'orange']
1-4. 구분자 문자열과 문자열 리스트 연결하기
- join(리스트)는 구분자 문자열과 문자열 리스트의 요소를 연결하여 문자열로 만들어 준다.
- ' '(공백) 에 join을 사용하여 각 문자열 사이에 공백이 들어가도록 연결했다.- '-'(마이너스) 에 join을 사용하여 각 문자열 사이에 마이너스가 들어가도록 연결했다.>>> ' '.join(['apple', 'pear', 'grape', 'pineapple', 'orange']) 'apple pear grape pineapple orange'
>>> '-'.join(['apple', 'pear', 'grape', 'pineapple', 'orange']) 'apple-pear-grape-pineapple-orange'
1-5. 소문자 ↔ 대문자로 바꾸기
- upper()는 문자열의 문자를 모두 대문자로 바꿔주는데, 만약 문자열 안에 대문자가 있다면 그 문자는 그대로 유지된다.
>>> 'python'.upper() 'PYTHON'
- lower()는 문자열의 문자를 모두 소문자로 바꿔주는데, 만약 문자열 안에 소문자가 있다면 그대로 유지된다.
>>> 'PYTHON'.lower() 'python'
1-7. 공백 삭제하기
- lstrip()은 문자열에서 왼쪽에 있는 연속된 모든 공백을 삭제한다.( l 은 left를 의미)
>>> ' Python '.lstrip() 'Python '
- rstrip()은 문자열에서 오른쪽에 있는 연속된 모든 공백을 삭제한다.(r 은 right를 의미)
>>> ' Python '.rstrip() ' Python'
- strip()은 문자열에서 양쪽에 있는 연속된 모든 공백을 삭제한다.
>>> ' Python '.rstrip() ' Python'
1-8. 특정 문자 삭제하기
- lstrip('삭제할문자들')처럼 삭제할 문자들을 문자열 형태로 넣어주면, 문자열 왼쪽에 있는 해당 문자를 삭제한다.
- 문자열 왼쪽의 ,(콤마)와 .(점)을 삭제하는데, 공백을 넣지 않았으므로 공백은 그대로 둔다.>>> ', python.'.lstrip(',.') ' python.'
- rstrip('삭제할문자들')처럼 삭제할 문자들을 문자열 형태로 넣어주면, 문자열 오른쪽에 있는 해당 문자를 삭제한다.
- 문자열 오른쪽의 ,(콤마)와 .(점)을 삭제하는데, 공백을 넣지 않았으므로 공백은 그대로 둔다.>>> ', python.'.rstrip(',.') ', python'
- strip('삭제할문자들')처럼 삭제할 문자들을 문자열 형태로 넣어주면 문자열 양쪽에 있는 해당 문자를 삭제한다.
- 문자열 양쪽의 ,(콤마)와 .(점)을 삭제하는데, 공백을 넣지 않았으므로 공백은 그대로 둔다>>> ', python.'.strip(',.') ' python'
※ 구두점을 간단하게 삭제하기
- string 모듈의 punctuation에는 모든 구두점이 들어있는데, strip 메서드에 string.punctuation을 넣으면 문자열 양쪽의 모든 구두점을 간단하게 삭제할 수 있다.
>>> import string >>> ', python.'.strip(string.punctuation) ' python' >>> string.punctuation '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
- 만약 공백까지 삭제하고 싶다면 string.punctuation에 공백 ' '을 연결해서 넣어줘도 되고
>>> ', python.'.strip(string.punctuation + ' ') 'python'
- 메서드 체이닝을 활용해도 된다.
>>> ', python.'.strip(string.punctuation).strip() 'python'
1-9. 문자열을 정렬하기
- ljust(길이)는 문자열을 지정된 길이로 만든 뒤 왼쪽으로 정렬하고 남는 공간은 공백으로 채운다.
- 'python'의 길이를 10으로 만든 뒤 왼쪽으로 정렬하고 남는 공간을 공백 4칸으로 채웟다.>>> 'python'.ljust(10) 'python '
- rjust(길이)는 문자열을 지정된 길이로 만든 뒤 오른쪽으로 정렬하고 남는 공간은 공백으로 채운다.
- 'python'의 길이를 10으로 만든 뒤 오른쪽으로 정렬하고 남는 공간을 공백 4칸으로 채웠다.>>> 'python'.rjust(10) ' python'
- center(길이)는 문자열을 지정된 길이로 만든 뒤 가운데로 정렬하고 남는 공간을 공백으로 채운다.
- 'python'의 길이를 10으로 만든 뒤 가운데로 정렬하고 양 옆의 남는 공간을 공백 2칸씩 채웠다.>>> 'python'.center(10) ' python '
- 만약 가운데로 정렬했을 때, 전체 길이와 남는 공간이 모두 홀수가 된다면 왼쪽에 공백이 한 칸 더 들어간다.
- 길이가 6인 'python'을 11칸으로 가운데 정렬하면 5칸이 남아서 왼쪽에 공백 3칸, 오른쪽에 공백 2칸이 들어간다.>>> 'python'.center(11) ' python '
1-10. 메서드 체이닝(method chaining)
- 문자열 메서드는 처리한 결과를 반환하도록 만들어져 있기 때문에, 메서드를 계속 연결해서 호출하는 메서드 체이닝이 가능하다.
- 문자열을 입력받을 때 자주 사용했던 input().split()도 input()이 반환한 문자열에 split을 호출하는 메서드 체이닝이다.# 문자열을 오른쪽으로 정렬한 뒤 대문자로 바꾼다 >>> 'python'.rjust(10).upper() ' PYTHON'
1-11. 문자열 왼쪽에 0 채우기
- zfill(길이)는 지정된 길이에 맞춰서 문자열의 왼쪽에 0을 채운다.(zero fill을 의미함)
- 단, 문자열의 길이보다 지정된 길이가 작다면 아무것도 채우지 않는다.
- 보통 zfill은 숫자를 일정 자릿수로 맞추고 앞자리는 0으로 채울 때 사용한다.
>>> '35'.zfill(4) # 숫자 앞에 0을 채움 '0035' >>> '3.5'.zfill(6) # 숫자 앞에 0을 채움 '0003.5' >>> 'hello'.zfill(10) # 문자열 앞에 0을 채울 수도 있음 '00000hello'
1-12. 문자열 위치 찾기 : find()
- find('찾을문자열')은 문자열에서 특정 문자열을 찾아서 인덱스를 반환하고, 문자열이 없으면 -1을 반환한다.
- find는 왼쪽에서부터 문자열을 찾는데, 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환한다.
- 'pl'이 2개 있지만 왼쪽에서 처음 찾은 'pl'의 인덱스 2를 반환한다.>>> 'apple pineapple'.find('pl') 2 >>> 'apple pineapple'.find('xy') -1
- rfind('찾을문자열')은 오른쪽에서부터 특정 문자열을 찾아서 인덱스를 반환하고, 문자열이 없으면 -1을 반환한다.
- 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환한다.
- 'pl'이 2개 있지만 오른쪽에서 처음 찾은 'pl'의 인덱스 12를 반환한다.>>> 'apple pineapple'.rfind('pl') 12 >>> 'apple pineapple'.rfind('xy') -1
1-13. 문자열 위치 찾기 : index()
- index('찾을문자열')은 왼쪽에서부터 특정 문자열을 찾아서 인덱스를 반환하는데, 문자열이 없으면 에러를 발생시킨다.
- 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환한다.
>>> 'apple pineapple'.index('pl') 2
- rindex('찾을문자열')은 오른쪽에서부터 특정 문자열을 찾아서 인덱스를 반환하고, 문자열이 없으면 에러를 발생시킨다.
- 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환한다.
>>> 'apple pineapple'.rindex('pl') 12
※ find()와 index()의 차이점find() index() 찾으려 하는 특정 문자열이 없을 때 -1을 반환 에러 발생
1-14. 문자열 개수 세기
- count('문자열')은 현재 문자열에서 특정 문자열이 몇 번 나오는지 알아낼 수 있다.
- 'pl'이 2번 나오므로 2가 반환된다.>>> 'apple pineapple'.count('pl') 2
'Python 코딩도장' 카테고리의 다른 글
파이썬 코딩도장 Unit 25 정리(1) - 딕셔너리 조작 (0) | 2022.02.01 |
---|---|
파이썬 코딩도장 Unit 24 정리(2) - 문자열 서식 지정자, 포매팅 사용 (0) | 2022.01.29 |
파이썬 코딩도장 Unit 23 정리(4) - 2차원 리스트의 할당과 복사 (0) | 2022.01.27 |
파이썬 코딩도장 Unit 23 정리(3) - 반복문으로 리스트 생성 (0) | 2022.01.26 |
파이썬 코딩도장 Unit 23 정리(2) - 2차원 리스트에서의 반복문 사용 (0) | 2022.01.25 |