[Python] 15. 표현식 / 메소드 기반 문자열 조합
본 포스팅은 “윤성우의 열혈 파이썬 중급편” 책 내용을 기반으로 작성되었습니다. 잘못된 내용이 있을 경우 지적해 주시면 감사드리겠습니다.
15-1. 문자열 조합
friend = ('Wonny', 33)
print('My friend', friend[0], 'is', str(friend[1]), 'years old')
print('My friend ' + friend[0] + ' is ' + str(friend[1]) + ' years old')
15-2. 표현식 기반 문자열 조합
String formating expressions: __%s_%s__ % (value, value) 스타일 문자열 조합
friend = ('Wonny', 33, 182.1)
print('My name is %s' % friend[0])
print('My friend %s is %d years old and %fcm talls' % (friend[0], friend[1], friend[2]))
%s 는 문자열 %d는 정수, %f는 실수를 표현하는데 사용한다.
%s, %f와 같은 것을 서식 지시자, 타입 지시자 라고 부른다.
만약 타입 지시자를 불일치한 자료형과 사용하면 TypeError가 발생하게 된다. 물론 예외는 있다
정수를 %f 위치에 가져다 놓으면 정수가 실수로 자동 변환됨.
실수를 %d 위치에 가져다 놓으면 실수가 정수로 자동 변환(소수점 버림 연산)됨.
15-3. 딕셔너리로 출력 대상 지정
s = '이름은 %(name)s 이고 나이는 %(age)d 이다' % {'name':'Wonny', 'age':33}
s
15-4. 세밀한 문자열 조합 지정
$[flags][width][.precision]f
[flag]: - 또는 0 또는 +를 넣어서 특별한 신호 줌+: 부호 정보도 함께 출력 (0보다 크면 +, 0보다 작으면 -)0: 빈 공간을 0으로 채움-: 공간이 남을 때 왼쪽으로 붙여서 출력
[width]: 폭, 어느 정도 넓이 확보하고 출력할지 결정[.precision]: 정밀도, 소수 이하 몇째 자리까지 출력할지 결정
print('내 키는 %12.3f 입니다' % 182.1)
print('내 키는 %012.3f 입니다' % 182.1)
print('내 키는 %+12.3f 입니다' % 182.1)
print('내 키는 %-12.3f 입니다' % 182.1)
print('내 키는 %-+12.3f 입니다' % 182.1)
print('내 %(속성)s는 %(키)-+12.3f 입니다' % {'속성': '키', '키': 182.1}) # 딕셔너리도 적용 가능
(결과) 내 키는 182.100 입니다
내 키는 00000182.100 입니다
내 키는 +182.100 입니다
내 키는 182.100 입니다
내 키는 +182.100 입니다
내 키는 +182.100 입니다
15-5. 메소드 기반 문자열 조합
String formating method calls: '__{}_{}__'.format(value, value) 스타일 문자열 조합
intro1 = '{}...{}'.format('Wonny', 33)
intro2 = '{1}...{0}'.format('Wonny', 33)
intro3 = '{age}...{name}'.format(name='Wonny', age=33)
intro1
intro2
intro3
(결과) 'Wonny...33'
'33...Wonny'
'33...Wonny'
15-6. 인덱싱 연산 추가
intro1 = ['Wonny', (33, 182)]
intro2 = {'name':'wonny', 'age':33}
'{0}...{1}...{1[0]}...{1[1]}'.format(*intro1)
'name = {0[name]}, age = {0[age]}'.format(intro2)
(결과) 'Wonny...(33, 182)...33...182'
'name = wonny, age = 33'
15-7. 보다 세밀한 문자열 구성 지정
위에서 배운 $[flags][width][.precision]f 지정 할 수 있다!
print('내 키는 {0:d} 입니다'.format(182)) # 182에 소수 넣으면 ValueError 발생!
print('정확한 내 키는 {0:12.3f} 입니다'.format(182.1))
print('정확한 내 키는 {0:012.3f} 입니다'.format(182.1))
print('정확한 내 키는 {0:+12.3f} 입니다'.format(182.1))
print('정확한 내 키는 {0:<12.3f} 입니다'.format(182.1)) # 왼쪽으로 붙임
print('정확한 내 키는 {0:>12.3f} 입니다'.format(182.1)) # 오른쪽으로 붙임
print('정확한 내 키는 {0:*^12.3f} 입니다'.format(182.1)) # 가운데 정렬 후 빈공간 *로 채움
print('정확한 내 키는 {0:+<12.3f} 입니다'.format(182.1)) # 왼쪽 정렬 후 빈공간 +로 채움
(결과) 내 키는 182 입니다
정확한 내 키는 182.100 입니다
정확한 내 키는 00000182.100 입니다
정확한 내 키는 +182.100 입니다
정확한 내 키는 182.100 입니다
정확한 내 키는 182.100 입니다
정확한 내 키는 **182.100*** 입니다
정확한 내 키는 182.100+++++ 입니다
Leave a comment