[플레이데이터 빅데이터 부트캠프]Python f-string vs format

f-string

  • f-string을 사용할 때, 문자열 앞에 f를 붙여주면 된다.
  • 가장 최신 문법(파이썬 3.6부터 사용 가능), 가장 간결하고 직관적인 표현법이다.
print(f'The sum of 1 + 2 = {1+2}')
The sum of 1+2 = 3

a = 3
b = 6
print(f'The sum of {a} + {b} = {a+b}')
The sum of 3+ 6 = 9

 

f-string은 숫자뿐만 아니라 문자열에서도 사용 가능하다.

a = 'abcd'
print(f'{a[::-1]}')
dcba

 

함수 사용도 가능하다.

a = 'abcd'
# dcba
print(f'abcd를 거꾸로 하면? {"".join(reversed(a))}') # 함수도 작동한다 print 구문 안에서
abcd를 거꾸로 하면? dcba

 

원하는 값의 소수점 자릿수도 맞춰서 출력 가능하다.

PI = 3.141592 # 상수(constant) 대문자로 표기하는 것이 원칙입니다 
r = 3
print(f'파이: {PI:.2f}') # {표현내용}에 변수를 입력
print(f'반지름이 r인 원의 넓이: {PI*r*r:.3f}') # 반지름이 r인 원의 넓이를 소수점 셋째자리까지 출력해주시고
print(f'반지름이 r인 원의 넓이: {PI*r**2:.3f}') # r**2 : r의 거듭제곱
print(f'36만원: {360000:,}')# 360000원을 세자리수마다 ,로 끊어서 출력해주세요 

파이: 3.14
반지름이 r인 원의 넓이: 28.274
반지름이 r인 원의 넓이: 28.274
36만원: 360,000

print(f'{12300000000:.1e}')# 큰 숫자인 경우 10의 몇자리 수인지 까지 나타낼 수 있다.
1.2e+10

print(f'{12300000000:.2e}')
1.23e+10
a = 1
b = 2
f'The sum of {a} + 2  = {"글자":^5.1s}'  # :^n.m - 가운데 정렬하겠다 빈칸 n개만큼 그리고 해당 변수에서 m개만 출력하겠다
'The sum of 1 + 2  =   글  '

문자열을 formatting을 할 경우 d 대신 s를 입력하면 된다.

 

format

  • format()은 문자열을 추가하거나 형식화하는데 사용하는 메소드이다.
  • 파이썬3.1부터는 변수명/인덱스명을 생략 가능하다.
'The sum of 1 + 2  = {}'.format(1+2)
The sum of 1 + 2  = 3

'The sum of {} + 2  = {}'.format(1, 1+2) # 구멍{} 뚫어주고 구멍 뚫어놓은만큼 .format() 안에 값을 적어줍니다
The sum of 1 + 2  = 3

print('파이: {:.2f}'.format(PI)) # {표현내용}에 변수를 입력
print('반지름이 r인 원의 넓이: {:.3f}'.format(PI*r*r)) # 반지름이 r인 원의 넓이를 소수점 셋째자리까지 출력해주시고
print('반지름이 r인 원의 넓이: {:.3f}'.format(PI*r**2)) # r**2 : r의 거듭제곱
print('36만원: {:,}'.format(360000))# 360000원을 세자리수마다 ,로 끊어서 출력해주세요

 

format()을 사용하여, 정렬을 하는 방법도 있다.

a = 1
b = 2
'The sum of {} + 2  = {:^5d}'.format(a, a+b)      # ^ : 중앙정렬, < : 왼쪽 정렬, > : 오른쪽 정렬
'The sum of 1 + 2  =   3  '

위의 결과처럼 n칸 안에서 가운데 정렬 혹은 왼쪽, 오른쪽 정렬을 할 수 있다.

'{:_<10}'.format('test')   #^ : 중앙정렬, < : 왼쪽 정렬, >: 오른쪽 정렬
'test______'

위와 같이  'test'라는 문자열을 불러올 때, 왼쪽 정렬을 하여, 10개의 공백중 나머지 공간을 _로 채워넣을 수도 있다.