본문 바로가기
Python/02. 파이썬의 기초, 자료형

02-2-3 포매팅

by gamdong2 2024. 6. 24.

1) 문자열 포매팅   *formatting : 구성화
문자열 안의 특정한 값을 바꿀 때, 문자열 안에 어떤 값을 삽입하는 방법

  • 숫자 바로 대입
=====%d(문자열 포맷 코드) : 숫자 삽입=====
>>> "I eat %d apples." % 3
'I eat 3 apples.'
  • 문자열 바로 대입
=====%s : 문자열 삽입=====
>>> "I eat %s apples." % "five"
'I eat five apples.'

=====%s : 어떤 형태의 값이든 변환해 넣을 수 있음=====
>>> "I eat %s apples." % 3
'I eat 3 apples.'
>>> "I eat %s apples." % 3.234
'I eat 3.234 apples.'
# %s : % 뒤에 있는 3(정수)이나 3.234(부동소수)와 같은 값을 문자열로 바꾸어 대입하기 때문에 %d, %f를 사용하지 않아도 삽입 가능
  • 숫자 값을 나타내는 변수로 대입
>>> number = 3
>>> "I eat %d apples." % number
'I eat 3 apples.'
  • 2개 이상의 값 넣기
>>> number = 10
>>> day = "three"
>>> "I ate %d apples. so I was sick for %s days." % (number, day)
'I ate 10 apples. so I was sick for three days.'

 

[TIP] 문자열 포맷 코드
- 문자열에 대입할 수 있는 자료형에는 정수, 문자열 외에도 다양한 것이 있음
코드설명
%s문자열(string)
%c문자 1개(character)
%d정수(integer)
%f부동소수(floating-point)
%o8진수
%x16진수
%%Literal %(문자 % 그 자체)

 
 
 

2) 포맷 코드 & 숫자 함께 사용
 
① 정렬과 공백 

  • "%ns" % "대입값" : 전체 길이 n개의 문자열 공간에서, 대입값을 오른쪽 정렬(나머지 앞 칸들은 공백)
>>> "%10s" % "hi"
'        hi'
#전체 길이가 10개인 문자열 공간에서,
#대입값("hi")을 오른쪽 정렬 & 그 앞의 나머지 8칸은 공백으로 남겨둠

 

  • "%-ns" % "대입값" : 전체 길이 n개의 문자열 공간에서, 대입값을 왼쪽 정렬(나머지 뒷 칸들은 공백)
>>> "%-10sjane." % 'hi'
'hi        jane'
#hi를 왼쪽 정렬 & 나머지는 공백으로 채움

 

② 소수점 표현

  • "%0.nf" % 소수 : 주어진 소수에서 소수점 n번째 자리까지 나타냄
>>> "%0.4f" % 3.42134234
'3.4213'
# "%m.nf"에서 m=0인 경우, 문자열's 길이에 상관하지 않겠다는 의미

 

  • "%m.nf" % 소수 : 문자열's m개의 공간에서, 주어진 소수's 소수점 n번째 자리까지 나타냄(나머지 앞 칸들은 공백)
>>> "%10.4f" % 3.42134234
'    3.4213'

 
 
 

3) format 함수를 사용한 포매팅
문자열의 format 함수를 사용하면 좀 더 발전된 스타일로 문자열 포맷을 지정할 수 있음

  • 숫자 바로 대입
>>> "I eat {0} apples".format(3)
'I eat 3 apples'
#"I eat {0} apples" 문자열 중 {0} 부분이 숫자 3으로 바뀜
  • 문자열 바로 대입
>>> "I eat {0} apples".format("five")
'I eat five apples'
#"I eat {0} apples" 문자열 중 {0} 부분이 문자열 'five'로 바뀜
  • 숫자 값을 가진 변수로 대입
>>> number = 3
>>> "I eat {0} apples".format(number)
'I eat 3 apples'
#"I eat {0} apples" 문자열 중 {0} 부분이 number 변수값 3으로 바뀜
  • 2개 이상의 값 넣기
>>> number = 10
>>> day = "three"
>> "I ate {0} apples. so I was sick for {1} days.".format(number, day)
'I ate 10 apples. so I was sick for three days.'
#문자열의 인덱스 항목 {0}, {1}이 format 함수의 입력값으로 순서에 맞게 바뀜
  • 이름으로 넣기
>>> "I ate {number} apples. so I was sick for {days} days.".format(number=1, day=3)
'I ate 10 apples. so I was sick for 3 days.'
#{0}, {1} 같은 인덱스 항목 대신 더 편리한 {name}을 사용
#{name}을 사용할 경우, format 함수에 name=value 형태의 입력값으로~
  • 인덱스&이름 혼용해서 넣기
>>>  "I ate {0} apples. so I was sick for {day} days.".format(10, day=3)
'I ate 10 apples. so I was sick for 3 days.'
  • 왼쪽 정렬
>>> "{0:<10}".format("hi")
'hi        '
#치환되는 문자열을 왼쪽으로 정렬(문자열 총 자릿수 10)
  • 오른쪽 정렬
>>> "{0:>10}".format("hi")
'        hi'
#치환되는 문자열을 오른쪽으로 정렬(문자열 총 자릿수 10)
  • 가운데 정렬
>>> "{0:^10}".format("hi")
'    hi    '
#치환되는 문자열을 가운데 정렬(문자열 총 자릿수 10)
  • 공백 채우기
======정렬시 공백 대신 지정한 문자로 채워 넣기; 채워 넣을 문자는 정렬문자(<, >, ^) 바로 앞에 넣어야 함===== 
>>> "{0:=^10}".format("hi")
'====hi===='   #가운데 정렬 & 빈 공간을 =로 채움
>>> "{0:!<10}".format("hi")
'hi!!!!!!!!'   #왼쪽 정렬 & 빈 공간을 !로 채움
  • 소수점 표현
>>> y = 3.42134234
>>> "{0:0.4f}".format(y)
'3.4213'
>>> "{0:10.4f}".format(y)
'    3.4213'
  • {, } 문자 그대로 표현하기
>>> "{{ and }}".format()
'{ and }'
#format 함수를 사용해 문자열을 포매팅할 경우, 중괄호 문자({})를 포매팅 문자가 아닌 문자 그대로 사용하고 싶을 때; {{}} 처럼 2개 연속해서 사용

 
 
 

4) f 문자열 포매팅
문자열 앞에 f 접두사를 붙이면 f 문자열 포매팅 기능을 사용할 수 있음

  • f 문자열 포매팅
=====name, age 같은 변숫값을 생성한 후 그 값을 참조할 수 있음=====
>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'

=====f 문자열 포매팅은 표현식(중괄호 안의 변수를 계산식과 함께 사용하는 것)을 지원=====
>>> age = 30
>>> f'나는 내년이면{age + 1}살이 된다.'
'나는 내년이면 31살이 된다.'

=====f 문자열 포매팅은 딕셔너리(Key · Value를 한 쌍으로 가지는 자료형)를 지원=====
>>> d = {'name':'홍길동', 'age':30}
>>> f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
  • f 문자열 정렬
=====왼쪽 정렬=====
>>> f'{"hi":<10}'
'hi        '

=====오른쪽 정렬=====
>>> f'{"hi":>10}'
'        hi'

=====가운데 정렬=====
>>> f'{"hi":^10}'
'    hi    '
  • f 문자열 공백 채우기
=====가운데 정렬 & '='로 공백 채우기=====
>>> f'{"hi":=^10}'
'=====hi====='

=====왼쪽 정렬 & '!'로 공백 채우기=====
>>> f'{"hi":!<10}'
'hi!!!!!!!!'
  • f 문자열 소수점 표현
>>> y = 3.42134234
>>> f'{y:0.4f}'   #소수점 4자리까지만 표현
'3.4213'
>>> f'{y:10.4f}'   #소수점 4자리까지만 표현 & 총 자릿수 '10'
'    3.4213'
  • f 문자열에서 {, } 문자 그대로 표현하기
>>> f'{{ and }}'   #f 문자열에서 {}를 문자 그대로 표시하려면 2개를 동시에 사용 
'{ and }'

 
 
 
 
 
출처 : ⎡Do it! 점프 투 파이썬 (박응용)

'Python > 02. 파이썬의 기초, 자료형' 카테고리의 다른 글

02-3 리스트 자료형  (0) 2024.06.25
02-2-4 문자열 관련 함수들  (0) 2024.06.24
02-2-2 연산 · 인덱싱 · 슬라이싱  (0) 2024.06.24
02-2-1 문자열 만들기  (0) 2024.06.24
02-2 문자열 자료형  (0) 2024.06.24