본문 바로가기

프로그래머/Python

[윤성우의 열혈 파이썬 중급편] 21. 표현식 기반 문자열 조합

21. 표현식 기반 문자열 조합

문자열 조합

s = 'I am ' + str(7) + ' years old'
print(s)    # 'I am 7 years old'
  • String formatting expressions : '표현식'을 기반으로 문자열 조합
    • '_ %s%s __' % (value, value) 스타일 문자열 조합
  • String formatting method calls : '메소드 호출'을 통해 문자열 좋밯
    • '_ {}{} __'.format(value, value) 스타일 문자열 조합

표현식 기반 문자열 조합

s = 'My name is %s' % 'Yoon'

s = 'My friend %s is %d years old and %fcm tall.' % ('Jung', 22, 178.5)

friends = [('Jung', 22), ('Hong', 23), ('Park', 24)]
for f in friends:
    print('My friend %s is %d years old' % (f[0], f[1]))
  • %s : 문자열
  • %d : 정수(10진수)
  • %f : 실수
  • 기본적으로 타입 지시자와 값은 일치해야 한다
  • %s가 등장하면 문자열 이외에 원하는 것 대부분을 가져다 놓을 수 있다
    • 파이썬이 형 변환을 지원하기 때문

튜플 말고 딕셔너리로 출력 대상 지정하기

s = "%(name)s : %(age)d" % {'name': 'Yoon', 'age': 22}
  • 이름을 통해서 삽입할 내용을 결정할 수 있다
  • %(name)s : 'name의 값인 문자열'을 이 위치에 가져다 놔라
  • %(age)d : 'age의 값인 정수(%d)'를 이 위치에 가져다 놔라
  • 딕셔너리의 구성은 상관이 없다. 즉, name과 age의 등장 순서가 바뀌어도 괜찮다

보다 세밀한 문자열 조합 지정

'height: %f' % 3.14
# 'height: 3.140000'

'height: %.3f' % 3.14
# 'height: 3.140'

'height: %.2f' % 3.14
# 'height: 3.14'

'height: %7.2f' % 3.14
# 'height:    3.14'

'height: %10.2f' % 3.14
# 'height:       3.14'

'height: %07.2f' % 3.14
# 'height: 0003.14'

'height: %010.2f' % 3.14
# 'height: 0000003.14'

'height: %-7.2f' % 3.14
# 'height: 3.14   '

'height: %-10.2f' % 3.14
# 'height: 3.14      '

n = 3
'num: %+d' % n
# 'num: +3'

n = -1
'num: %+d' % n
# 'num: -1'
  • %[flags][width][.precision]f
  • flags : - 또는 0 또는 +를 넣어서 특별한 신호를 줌
      • : 부호 정보도 함께 출력
    • 0 : 빈 공간을 0으로 채움
      • : 공간이 남을 때는 왼쪽으로 붙여서 출력
  • width : 폭, 어느 정도 넓이를 확보하고 출력할지 결정
  • .precision : 정밀도, 소수 이하 몇째 자리까지 출력할지 결정

딕셔너리로 출력 대상 지정

'%(h)s: %(v)-+10.3f입니다.' % {'h': 'height', 'v': 3.14}
# 'height: +3.140   입니다'