CS/Python

[파이썬] String Formatting (f-string)

연수구 주정뱅이 2021. 8. 16. 19:00

파이썬에서는 여러가지 formatting 방법이 있다.

 

  • % formatting: 오래된 스타일의 formatting 방법
  • String formatting: 새로운 스타일의 formatting 방법
  • f-string: Python 3.6 이상에서 사용할 수 있는 새로운 스타일의 formatting 방법

 

그냥 f-string을 쓰자.

 

 


예시

temperature = 202
measure = 'Fahrenheit'
print('Water boils at %d degrees %s' % (temperature, measure))     # % formatting
print('Water boils at {} degrees {}'.format(temperature, measure)) # String formatting
print(f'Water boils at {temperature} degrees {measure}')           # f-string

 

 


Padding, Align

string = 'test'
print('%10s' % (string))
print('{:>10}'.format(string))
print(f'{string:>10}')

결과

      test
      test
      test

오른쪽에 문자열을 몰아쓴 후, 나머지 공백을 왼쪽에 놓는다. >를 사용한다.

 


string = 'test'
print('%-10s' % (string))
print('{:10}'.format(string))
print(f'{string:10}')

결과

test      
test      
test

왼쪽에 문자열을 몰아쓴 후, 나머지 공백을 오른쪽에 놓는다.

 


string = 'test'
print('{:*>10}'.format('test'))
print(f'{string:*>10}')

print('{:*<10}'.format('test'))
print(f'{string:*<10}')

결과

******test
******test
test******
test******

특정 문자로 채우는 방법이다. * 대신 다른 문자를 사용할 수 있다.

 


string = 'test'
print('{:^10}'.format('test'))
print(f'{string:^10}')

print('{:*^10}'.format('test'))
print(f'{string:*^10}')

결과

   test   
   test   
***test***
***test***

가운데 정렬을 할 때에는 ^를 사용한다.

 

 


문자열 자르기

string = 'xylophone'
print('%-.5s' % (string))
print('{:.5}'.format(string))
print(f'{string:.5}')

결과

xylop
xylop
xylop

.n을 사용한다. n은 자르고 싶은 문자의 개수이다.

 


 

숫자 출력

number = 3.141592653589793
print('%f' % (number))
print('{:f}'.format(number))
print(f'{number:f}'.format(number))

print(f'{number}')

결과

3.141593
3.141593
3.141593
3.141592653589793

소수를 출력하는 방법이다. f를 이어 쓰면 된다. 기본적으로 소수점 여섯째자리까지 표현한다.


 

number = 3.141592653589793
print('%.2f' % (number))
print('{:.2f}'.format(number))
print(f'{number:.2f}')

결과

3.14
3.14
3.14

.nf를 입력하면 된다. n은 원하는 소수점 아래자리 수이다.


 

number = 3.141592653589793
print('%08.2f' % (number))
print('{:08.2f}'.format(number))
print(f'{number:08.2f}')

결과

00003.14
00003.14
00003.14

08.2f는 8개의 문자를 출력하는데, 소수점 아래 두번째 자리까지 출력하고 나머지는 0으로 채운다는 뜻이다.


 

number = 12
print('%04d' % (number))
print('{:04d}'.format(number))
print(f'{number:04d}')

결과

0012
0012
0012

정수를 출력할 때에도 마찬가지이다. d는 생략해도 된다.

 

 

나머지는 필요할 때 업로드하겠다.

 

Reference: String Formatting