초보 개발자

22강 메소드 기반 문자열 조합 본문

Python/윤성우 열혈 파이썬

22강 메소드 기반 문자열 조합

taehyeki 2022. 1. 17. 20:37

21강에서 설명한 것의 2번째 방법이다.

 

String formatting method calls  '메소드 호출'을 통해 문자열 조합하기

'{0}...{1}...{2}'.format('Robot',125,'Box')
'Robot...125...Box'

문자열 안에 있는 {0}는 format 메소드의 첫 번째 전달인자로 대체된다. 그리고 {1}은 두 번째 전달 인자로 대체되고 {2}는 세 번째 전달 인자로 대체되어 새 문자열이 생성된다.

'{2}...{1}...{0}'.format('Robot',125,'Box')
'Box...125...Robot'

0,1,2의 순서를 이렇게 바꾸어도 상관없다. 

 

그리고 0,1,2 이 숫자들은 생략해도 된다. 이 때에는 순서대로대체 된다.

숫자 말고 이름을 적어주어도 된다.

 

 

'{toy}...{num}...{item}'.format(toy='Robot',num=125,item='Box')
'Robot...125...Box'
my = ['Robot', 125, 'Box']
'{}...{}...{}'.format(*my) 리스트를 언팩킹해도 된다.
'Robot...125...Box'

#위의 문장은 '{0}..{1}..{2}'.format(my[0],my[1],my[2])와 같다


my = ['Box', (24,31)]
'{0[0]}..{0[1]}..{1[0]}..{1[1]}'.format(*my) {0}은 'Box'이고 {1}은 (24,31)이다.
'B..o..24..31'
# {0}은 'Box'이므로 {0[0]}은 'B', {0[1]}은 'o'
# {1}은 (24,31)이므로 {1[0]}은 24, {1[1]}은 31

d = {'toy':'Robot', 'price':3500}
'toy = {0[toy]}, price = {0[price]}'.format(d)
'toy = Robot, price = 3500'
# {0}은  {'toy':'Robot', 'price':3500}이므로 {0[toy]}는 'Robot'이다.
# {0}은  {'toy':'Robot', 'price':3500}이므로 {0[price]}는 3500'이다.

 

[보다 세밀한 문자열 구성 지정]

 

앞서 flags, width, .precision를 다룬 적이 있다.

메서드 기반에서도 이러한 일이 가능하다.

 

'{0}.format(3.14)
'3.14'

# 위와 같이 {0}으로 3.14를 출력하는 경우, 파이썬이 실수라고 판단 및 출력을 한다.

'{0:f}'.format(3.14)
'3.140000'

# 위와 같이 {0:f}으로 3.14 출력하는 경우, 프로그래머가 실수라고 직접 알려주는 것임
# {0:f}와 같이 f를 붙여서 실수를 출력하면 정밀도가 소수 이하 6자리로 설정됨

:f를 붙여주면 된다.

전에는 %f 사이에 옵션을 넣어주었지만 지금은 :f사이에 옵션을 넣어준다.

 

'%.4f' % 3.14
'3.1400'

'{0:.4f}'.format(3.14)
'3.1400'

'%9.4f' % 3.14
'   3.1400'

'{0:9.4f}'.format(3.14)
'   3.1400'

'{0:<10.4f}'.format(3.14) # <은 왼쪽으로 붙이라는 의미
'3.1400    '

'{0:>10.4f}'.format(3.14) # >은 오른쪽으로 붙이라는 의미
'    3.1400'

'{0:^10.4f}'.format(3.14) # ^은 중앙에 위치시키라는 의미
'  3.1400  '

'%+d, %+d' % (5, -5) 
'+5, -5'

'{0:+d}, {1:+d}'.format(5,-5)
'+5 -5'

#위의 문장에서 d는 생략가능 즉 '{0:+}, {1:+}'.format(5,-5)와 같음
#그리고 순서대로 등장하니 0과 1도 생략가능 즉, '{:+}, {:+}'.format(5,-5)와 같음


'{0:*<10.4f}'.format(3.14) # :와 ^사이 등장한 *로 빈공간 채움
'**3.1400**'

'{0:+<10}'.format(7) # :와 ^사이 등장한 +로 빈공간 채움
'7+++++++++'

'{0:^^10}'.format(hi) # :와 ^사이 등장한 ^로 빈공간 채움
'^^^^hi^^^^'

오른쪽 부터 하나씩 끊어서 해석해보자

'Python > 윤성우 열혈 파이썬' 카테고리의 다른 글

24강 상속  (0) 2022.01.18
23강 클래스와 객체의 본질  (0) 2022.01.18
21강 표현식 기반 문자열 조합  (0) 2022.01.17
20강 enumerate와 문자열 비교  (0) 2022.01.17
19강 정렬 기술 sort, sorted, key  (0) 2022.01.17