기능 | 명령어 | 예제 |
문자열 바꾸기 | replace('바꿀문자열', '새문자열') | >>> 'Hello, world!'.replace('world', 'Python') 'Hello, Python!' |
>>> s = 'Hello, world!' >>> s = s.replace('world!', 'Python') >>> s 'Hello, Python' |
||
문자 바꾸기 | 규칙table = str.maketrans('기존문자','변경문자') 대상문자열.translate(규칙table) |
>>> table = str.maketrans('aeiou', '12345') >>> 'apple'.translate(table) '1ppl2' |
문자열 분리하기 | split() | >>> 'apple pear grape pineapple orange'.split() ['apple', 'pear', 'grape', 'pineapple', 'orange'] |
split('기준문자열') | >>> 'apple, pear, grape, pineapple, orange'.split(', ') ['apple', 'pear', 'grape', 'pineapple', 'orange'] |
|
문자열 리스트 연결하기(구분자 문자열로) | 구분자문자열 . join(문자열 리스트) | >>> ' '.join(['apple', 'pear', 'grape', 'pineapple', 'orange']) 'apple pear grape pineapple orange' |
소문자<->대문자로 바꾸기 | upper() | >>> 'python'.upper() 'PYTHON' |
lower() | >>> 'PYTHON'.lower() 'python' |
|
왼쪽, 오른쪽, 양쪽 공백 삭제하기 | lstrip(), rstrip(), strip() | >>> ' Python '.lstrip() 'Python ' |
>>> ' Python '.rstrip() ' Python' |
||
>>> ' Python '.strip() 'Python' |
||
왼쪽, 오른쪽, 양쪽의 특정 문자 삭제하기 | lstrip('삭제할문자들') | >>> ', python.'.lstrip(',.') ' python.' |
rstrip('삭제할문자들') | >>> ', python.'.rstrip(',.') ', python' |
|
strip('삭제할문자들') | >>> ', python.'.strip(',.') ' python' |
|
구두점을 간단하게 삭제하기 | import string 대상문자열.strip(string.punctuation) |
>>> import string >>> ', python.'.strip(string.punctuation) ' python' >>> string.punctuation '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~' |
, python.'.strip(string.punctuation).strip() # 구두점삭제 및 공백삭제 'python' |
||
문자열을 왼쪽/오른쪽/중앙 정렬하기 | ljust(길이) | >>> 'python'.ljust(10) 'python ' |
rjust(길이) | >>> 'python'.rjust(10) ' python' |
|
center(길이) | >>> 'python'.center(10) ' python ' |
|
문자열 왼쪽에 0 채우기 | zfill(길이) | >>> '35'.zfill(4) # 숫자 앞에 0을 채움 '0035' >>> '3.5'.zfill(6) # 숫자 앞에 0을 채움 '0003.5' >>> 'hello'.zfill(10) # 문자열 앞에 0을 채울 수도 있음 '00000hello' |
문자열 위치 찾기 | find('찾을문자열') | >>> 'apple pineapple'.find('pl') 2 >>> 'apple pineapple'.find('xy') -1 |
왼쪽에서부터 문자열을 찾음 / 찾는 문자열이 없으면 -1을 반환 / 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환 |
||
rfind('찾을문자열') | >>> 'apple pineapple'.rfind('pl') 12 >>> 'apple pineapple'.rfind('xy') -1 |
|
오른쪽에서부터 문자열을 찾음 / 찾는 문자열이 없으면 -1을 반환 / 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환 |
||
index('찾을문자열') | >>> 'apple pineapple'.index('pl') 2 |
|
왼쪽에서부터 문자열을 찾음 / 찾는 문자열이 없으면 error를 반환 / 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환 |
||
rfind('찾을문자열') | >>> 'apple pineapple'.rindex('pl') 12 |
|
오른쪽에서부터 문자열을 찾음 / 찾는 문자열이 없으면 error를 반환 / 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환 |
||
문자열 개수 세기 | count('문자열') | >>> 'apple pineapple'.count('pl') 2 |
1. 문자열 조작하기
문자열 바꾸기
새문자열 객체 = 무자열.replace('바꿀문자열', '새문자열')
문자열 안의 문자열을 다른 문자열로 바꿉니다
>>> 'Hello, world!'.replace('world', 'Python')
'Hello, Python!'
>>> s = 'Hello, world!'
>>> s = s.replace('world!', 'Python')
>>> s
'Hello, Python'
문자 바꾸기
변환table = str.maketrans('바꿀문자', '새문자')로 변환 테이블을 만듭니다.
그다음에 translate(테이블)을 사용하면 문자를 바꾼 뒤 결과를 반환합니다.
>>> table = str.maketrans('aeiou', '12345')
>>> 'apple'.translate(table)
'1ppl2'
문자열 분리하기
split()은 공백을 기준으로 문자열을 분리하여 리스트로 만듭니다.
split('기준문자열')과 같이 기준 문자열을 지정하면 기준 문자열로 문자열을 분리합니다.
>>> 'apple pear grape pineapple orange'.split()
['apple', 'pear', 'grape', 'pineapple', 'orange']
>>> 'apple, pear, grape, pineapple, orange'.split(', ')
['apple', 'pear', 'grape', 'pineapple', 'orange']
구분자 문자열과 문자열 리스트 연결하기
join(리스트)는 구분자 문자열과 문자열 리스트의 요소를 연결하여 문자열로 만듭니다.
>>> ' '.join(['apple', 'pear', 'grape', 'pineapple', 'orange'])
'apple pear grape pineapple orange'
마이너스 '-'에 join을 사용하면 각 문자열 사이에 마이너스가 들어가겠죠?
>>> '-'.join(['apple', 'pear', 'grape', 'pineapple', 'orange'])
'apple-pear-grape-pineapple-orange'
소문자를 대문자로 바꾸기
upper()는 문자열의 문자를 모두 대문자로 바꿉니다.
>>> 'python'.upper()
'PYTHON'
대문자를 소문자로 바꾸기
lower()는 문자열의 문자를 모두 소문자로 바꿉니다. 만약 문자열 안에 소문자가 있다면 그대로 유지됩니다.
>>> 'PYTHON'.lower()
'python'
왼쪽 공백, 오른쪽 공백, 양쪽 공백 삭제하기
lstrip, rstrip, strip 메서드사용
>>> ' Python '.lstrip()
'Python '
>>> ' Python '.rstrip()
' Python'
>>> ' Python '.strip()
'Python'
왼쪽 , 오른쪽 , 양쪽 의 특정 문자 삭제하기
lstrip('삭제할문자들'), rstrip('삭제할문자들'), strip('삭제할문자들')
>>> ', python.'.lstrip(',.')
' python.'
>>> ', python.'.rstrip(',.')
', python'
>>> ', 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'
문자열을 왼쪽, 오른쪽 정렬하기
ljust(길이), rjust(길이), center(길이)
>>> 'python'.ljust(10)
'python '
>>> 'python'.rjust(10)
' python'
>>> 'python'.center(10)
' python '
메서드 체이닝
이렇게 문자열 메서드는 처리한 결과를 반환하도록 만들어져 있습니다. 따라서 메서드를 계속 연결해서 호출하는 메서드 체이닝이 가능합니다. 메서드 체이닝은 메서드를 줄줄이 연결한다고 해서 메서드 체이닝(method chaining)이라 부릅니다.
다음은 문자열을 오른쪽으로 정렬한 뒤 대문자로 바꿉니다.
>>> 'python'.rjust(10).upper()
' PYTHON'
.
문자열 왼쪽에 0 채우기
zfill(길이)는 지정된 길이에 맞춰서 문자열의 왼쪽에 0을 채웁니다
>>> '35'.zfill(4) # 숫자 앞에 0을 채움
'0035'
>>> '3.5'.zfill(6) # 숫자 앞에 0을 채움
'0003.5'
>>> 'hello'.zfill(10) # 문자열 앞에 0을 채울 수도 있음
'00000hello'
문자열 위치 찾기
find('찾을문자열')은 문자열에서 특정 문자열을 찾아서 인덱스를 반환하고, 문자열이 없으면 -1을 반환합니다.
find는 왼쪽에서부터 문자열을 찾는데, 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환합니다.
>>> 'apple pineapple'.find('pl')
2
>>> 'apple pineapple'.find('xy')
-1
오른쪽에서부터 문자열 위치 찾기
rfind('찾을문자열')은 오른쪽에서부터 특정 문자열을 찾아서 인덱스를 반환하고, 문자열이 없으면 -1을 반환합니다(r은 오른쪽( right)을 의미). 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환합니다.
>>> 'apple pineapple'.rfind('pl')
12
>>> 'apple pineapple'.rfind('xy')
-1
문자열 위치 찾기
find, rfind 이외에도 index, rindex로 문자열의 위치를 찾을 수 있습니다.
index('찾을문자열')은 왼쪽에서부터 특정 문자열을 찾아서 인덱스를 반환합니다.
단, 문자열이 없으면 에러를 발생시킵니다.
index도 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환합니다.
>>> 'apple pineapple'.index('pl')
2
오른쪽에서부터 문자열 위치 찾기
rindex('찾을문자열')은 오른쪽에서부터 특정 문자열을 찾아서 인덱스를 반환합니다(r은 오른쪽(right)을 의미). 마찬가지로 문자열이 없으면 에러를 발생시키며 같은 문자열이 여러 개일 경우 처음 찾은 문자열의 인덱스를 반환합니다.
>>> 'apple pineapple'.rindex('pl')
12
문자열 개수 세기
count('문자열')은 현재 문자열에서 특정 문자열이 몇 번 나오는지 알아냅니다. 여기서는 'pl'이 2번 나오므로 2가 반환됩니다.
>>> 'apple pineapple'.count('pl')
2
[ 연습문제 ]
표준 입력으로 문자열이 입력됩니다. 입력된 문자열에서 'the'의 개수를 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다). 단, 모든 문자가 소문자인 'the'만 찾으면 되며 'them', 'there', 'their' 등은 포함하지 않아야 합니다.
"""
먼저 문자열이 입력되므로 input을 사용하여 문자열을 변수에 저장해줍니다(변수는 이하 paragraph).
paragraph에서 paragraph.count('the')처럼 count 메서드로 'the'의 개수를 구하면
'whether', 'themselves'의 개수까지 구하게 되므로 잘못된 결과가 나옵니다.
따라서 'the'의 개수만 구하려면 먼저 paragraph에 split을 사용하여 공백을 기준으로 분리한 뒤 리스트로 만들어줍니다(리스트는 이하 words).
그다음에 for 반복문으로 리스트 words를 반복하면서 문자열이 'the'인지 판단합니다.
이때 단순히 == 연산자로 요소 i가 'the'와 같은지만 판단하면 'the,' 또는 'the.'처럼 ,(콤마)나 .(점)이 붙어있는 문자열은 'the'와 다르다고 나옵니다.
따라서 strip에 ',.'을 지정해서 콤마와 점을 삭제한 뒤 'the'와 비교해야 합니다.
비교한 결과가 참이면 변수 count에 1을 더해주면 됩니다.
마지막으로 print를 사용하여 count의 값을 출력해줍니다.
"""
from string import punctuation
paragraph=input()
words = paragraph.split()
count = 0
for i in words:
if 'the' == i.strip(punctuation):
count +=1
print(count)
the grown-ups' response, this time, was to advise me to lay aside my drawings of boa constrictors, whether from the inside or the outside, and devote myself instead to geography, history, arithmetic, and grammar. That is why, at the, age of six, I gave up what might have been a magnificent career as a painter. I had been disheartened by the failure of my Drawing Number One and my Drawing Number Two. Grown-ups never understand anything by themselves, and it is tiresome for children to be always and forever explaining things to the.
6
'BASIC' 카테고리의 다른 글
딕셔너리 응용하기 (1) | 2023.11.27 |
---|---|
문자열 포매팅 (1) | 2023.11.25 |
2차원 리스트의 할당과 복사 알아보기 (1) | 2023.11.25 |
반복문으로 리스트 만들기 (0) | 2023.11.24 |
2차원 리스트 (0) | 2023.11.24 |
댓글