> Unit.24 문자열 응용하기 <
- 문자열 메서드
- replace : 문자열 안의 문자열을 다른 문자열로 바꾸는 메서드이다. 문자열 자체는 바뀌지 않으며 다른 문자열로 바꾼 결과를 반환한다.
>>> s = 'Hello, world!'
>>> s = s.replace('world!', 'Python')
>>> s
'Hello, Python'
- translate : str.maketrans('바꿀문자', '새문자')로 된 변환 테이블을 만든 후 traslate(테이블)을 사용하면 문자를 바꾼 후 그 결과를 반환한다.
>>> table = str.maketrans('aeiou', '12345')
>>> 'apple'.translate(table)
'1ppl2'
- split : 문자열을 분리하는 메서드이다. split('기준 문자열')처럼 기준 문자열을 지정해주면 지정한 기준 문자열을 기준으로 문자열을 분리하여 리스트를 만든다. ()안에 아무것도 없으면 공백을 기준으로 문자열을 분리하여 리스트로 만든다.
- join : 구분자 문자열과 문자열 리스트의 요소를 연결해 문자열로 만드는 메서드이다. 공백 ' '에 join을 사용하여 각 문자열 사이에 공백이 들어가도록 만들 수 있다. 공백이 아니라 '기준 문자열'과 같이 기준 문자열을 넣어 join을 하면 지정한 기준 문자열이 각 문자열 사이에 들어가게 된다.
- upper : 소문자를 모두 대문자로 바꾸는 메서드이다.
-lower : 대문자를 전부 소문자로 바꾸는 메서드이다.
- lstrip : 문자열에서 왼쪽에 있는 연속된 공백들을 삭제한다. () 안에 삭제할 문자들을 문자열 형태로 넣으면 왼쪽에 위치한 해당 문자를 삭제한다.
-rstrip : 문자열에서 오른쪽에 있는 연속된 공백들을 삭제한다. () 안에 삭제할 문자들을 문자열 형태로 넣으면 오른쪽에 위치한 해당 문자를 삭제한다.
- strip : 문자열의 양쪽에 있는 연속된 공백들을 삭제한다. () 안에 삭제할 문자들을 문자열 형태로 넣으면 해당 문자를 삭제한다.
- ljust : 문자열을 지정된 길이로 만든 후 왼쪽으로 정렬하여 남는 공간을 공백으로 채우는 메서드이다.
- rjust : 문자열을 지정된 길이로 만든 후 오른쪽으로 정렬하여 남는 공간을 공백으로 채우는 메서드이다.
- center : 문자열을 지정된 길이로 만든 후 가운데로 정렬하여 남는 양쪽 공간을 모두 공백으로 채우는 메서드이다.
- zfill : 지정된 길이에 맞춰서 문자열의 왼쪽에 0을 채우는 메서드이다. 문자열의 길이보다 지정된 길이가 작다면 아무것도 채우지 않는다. 숫자를 일정 자릿수로 맞추고 앞자리는 0으로 채울 때 많이 사용한다.
- find : 문자열에서 특정 문자열을 찾아 인덱스를 반환하는 메서드이다. 특정 문자열이 없으면 -1을 반환한다. 오른쪽에서부터 문자열의 위치를 찾을 땐 'rfind'를 사용한다.
index로도 문자열의 위치를 찾을 수 있다. 대신 index는 특정 문자열이 없으면 에러를 발생시키며 특정 문자열이 여러개 일 때는 가장 처음 찾은 문자열의 인덱스를 반환한다. 마찬가지로 오른쪽에서부터 문자열 위치를 찾을 땐 rindex를 사용한다.
- 문자열 서식 지정자
문자열에는 서식 지정자로 문자열과 숫자, 소수점을 넣고 표현할 수 있다.
#문자열 넣기
>>> 'I am %s.' % 'james'
'I am james.'
#숫자 넣기
>>> 'I am %d years old.' % 20
'I am 20 years old.'
#소수점 표현
>>> '%f' % 2.3
'2.300000'
>>> '%.2f' % 2.3
'2.30'
>>> '%.3f' % 2.3
'2.300'
서식지정자를 사용하여 문자열을 정렬할 수도 있다. % 뒤에 숫자를 붙이면 문자열을 지정된 길이로 만들고 오른쪽으로 정렬하여 남는 공간을 공백으로 채우게 된다.
- format 메서드 사용하기
서식 지정자보다 더 간단하게 문자열 포매팅을 사용하여 문자열을 만들 수 있다. {} 안에 포매팅을 지정하고 format 메서드로 값을 넣으면 된다.
>>> 'Hello, {0} {2} {1}'.format('Python', 'Script', 3.6)
'Hello, Python 3.6 Script'
#같은 값을 여러 개 넣을 수도 있다.
>>> '{0} {0} {1} {1}'.format('Python', 'Script')
'Python Python Script Script'
만약 {}에서 인덱스를 생략하면 format에 지정한 순서대로 값이 들어가게 된다. 또 {}에 인덱스로 순서를 지정하지 않고 이름을 지정할 수도 있다.
파이썬 3.6 버전부터는 변수에 값을 넣은 후 {}에 변수 이름을 지정하면 더 간단하게 문자열을 만들 수 있다. 이 때는 formatting이라는 의미로 문자열 앞에 f를 붙인다.
>>> language = 'Python'
>>> version = 3.6
>>> f'Hello, {language} {version}'
'Hello, Python 3.6'
문자열 포매팅으로도 문자열을 정렬할 수 있는데, 인덱스 뒤에 : (콜론)을 붙여 정렬할 방향과 길이를 지정해 주면 문자열 정렬을 할 수 있다. 지정된 길이로 문자열을 만든 후 부등호의 방향대로 정렬하고 남은 공간을 공백으로 채우게 된다.
위 그림에서는 부등호의 방향이 왼쪽일 때를 나타내고 있다.
- 숫자 개수 맞추기
%와 d 사이에 0과 숫자 개수를 넣어주면 자릿수에 맞춰서 앞에 0이 들어가기 때문에 정수와 실수 앞에 0을 넣어 숫자 개수를 맞출 수도 있다.
>>> '%03d' % 1
'001'
>>> '{0:03d}'.format(35)
'035'
>>> '%08.2f' % 3.6
'00003.60'
>>> '{0:08.2f}'.format(150.37)
'00150.37'
위의 코드블럭에서 아래 코드처럼 실수에서도 숫자 개수를 맞출 수 있다.
'%08.2f' % 3.6을 출력했을 때 '00003.60'이 나오는 건 잘 보면 3 앞에 0이 7개가 아니라 4개만 붙어 있습니다. 실수는 숫자 개수에 정수 부분, 소수점, 소수점 이하 자릿수가 모두 포함되기 때문이다. 따라서 '00003' 5개, '.' 1개, '60' 2개 총 8개가 된다.
24.5 심사 문제 : 특정 단어 개수 세기
a = input().split()
count = 0
for i in a :
if i.strip(',.') == 'the' :
count += 1
print(count)
24.6 심사문제 : 높은 가격 순으로 출력하기
prices=list(map(int,input().split(';')))
prices.sort(reverse=True)
for i in prices:
print('{0:>9,}'.format(i))
https://github.com/YOOHYOJEONG/dojang_python
GitHub - YOOHYOJEONG/dojang_python
Contribute to YOOHYOJEONG/dojang_python development by creating an account on GitHub.
github.com