Python에서는 문자열의 format() 함수를 사용하여 부동소수점 숫자를 원하는 고정 폭과 소수점 자릿수로 손쉽게 포맷할 수 있습니다. 이 방법은 데이터를 표 형태로 출력하거나, 보고서를 작성할 때 특히 유용합니다.
부동소수점 숫자 포맷하기
포맷 지정자 {:10.4f}를 사용하면 전체 폭 10자리, 소수점 이하 4자리로 숫자를 출력할 수 있습니다.
nums = [0.555555555555, 1, 12.0542184, 5589.6654753]
for x in nums:
print("{:10.4f}".format(x))
출력 결과
0.5556
1.0000
12.0542
5589.6655
출력을 보면 모든 숫자가 소수점 둘째 자리까지 정렬되어 표시됩니다. 소수점 넷째 자리에서 반올림이 자동으로 적용되며, 폭이 10자리보다 짧은 숫자는 앞쪽에 공백이 채워져 오른쪽 정렬됩니다.
정수 포맷하기
같은 format() 함수를 사용하여 정수도 포맷할 수 있습니다. 정수에는 d 지정자를 사용합니다.
nums = [5, 20, 500]
for x in nums:
print("{:d}".format(x))
출력 결과
5 20 500
패딩(여백) 추가하기
d 앞에 숫자를 지정하면 해당 폭만큼 여백을 확보하여 숫자를 정렬할 수 있습니다.
nums = [5, 20, 500]
for x in nums:
print("{:4d}".format(x))
출력 결과
5 20 500
폭을 4로 지정했기 때문에 각 숫자의 앞쪽에 공백이 채워져 오른쪽으로 정렬된 것을 확인할 수 있습니다. 왼쪽 정렬을 원한다면 {:<4d}, 가운데 정렬은 {:^4d}처럼 정렬 기호를 추가하면 됩니다.
f-string 활용하기 (Python 3.6 이상)
Python 3.6부터는 더욱 간결한 f-string 문법을 사용할 수 있습니다. 결과는 동일하지만 코드가 더 읽기 쉬워집니다.
nums = [0.555555555555, 1, 12.0542184, 5589.6654753]
for x in nums:
print(f"{x:10.4f}")
주요 포맷 지정자 정리
f: 고정 소수점 표기 (예:{:.2f}→ 소수점 둘째 자리까지)d: 정수 표기e: 지수 표기 (예:{:.2e})%: 백분율 표기 (예:{:.1%}),: 천 단위 구분 기호 (예:{:})
숫자 포맷팅의 다양한 세부 옵션과 뉘앙스를 학습하려면 pyformat.info 사이트가 훌륭한 참고 자료입니다.