포맷팅을 할 수 있는 방법에는 2가지가 있습니다.
A = 4
B = 12
C = 'hi'
D = 3.14159
print('%d %d %s %f' %(A,B,C,D))
print('{} {} {} {}' .format(A,B,C,D))
결과 :
4 12 hi 3.141590
4 12 hi 3.14159
%f의 경우 기본 자릿수가 소수점 이하 6으로 되어있지만, { }에서는 그냥 값만 나옵니다.
%를 이용한 포맷팅의 경우는 자료형을 지정해줘야합니다.
1. % 포맷팅의 활용 : 자릿수를 지정하거나, 숫자의 경우 공백 대신 0을 채울 수 있다.
A = 4
B = 12
C = 'hi'
D = 3.14159
print("'%3d'" %a) # 기본 공간을 3으로 셋팅. 그 공간에 A = 4를 넣음. 따라서 공백(2) + A(1) = 기본 공간 3이 된다.
print("'%03d'" %a) # 위에꺼에서 기본 공간의 나머지를 '0'으로 채운다. (0 이외의 숫자는 불가)
print("'%3d'" %B) # 기본 공간을 3으로 셋팅. 그 공간에 B = 12를 넣음. 따라서 공백(1) + A(2) = 기본 공간 3이 된다.
print()
print("'%3s'" %C) # 기본 공간을 3으로 셋팅. 그 공간에 C = 'hi'를 넣음. 따라서 공백(1) + A(2) = 기본 공간 3이 된다.
print("'%03s'" %C) # 나머지 공간에 문자열을 채우는 것은 불가능. 0은 채워봤자 출력 안 됨. 따라서 의미 없음.
print()
print("'%8f'" %D) # 3(1) + .(1) + .141590(6) = 기본 공간 8
print("'%9f'" %D) # 기본 공간이 9니 앞에 공백이 하나 생긴다.
print("'%.3f'" %D) # 3(1) + .(1) + .14(3) = 기본 공간 5 (소숫점 3자리까지 표기. 이하는 반올림 처리.)
print("'%6.3f'" %D) # 기본 공간이 6이니 앞에 공백이 하나 생긴다. (전체 기본 공간은 6. 소숫점 3자리까지 표기.)
결과 :
' 4'
'004'
' 12'
' hi'
' hi'
'3.141590'
' 3.141590'
'3.142'
' 3.142'
2. { } 포맷팅의 활용 : 자릿수 지정이나, 숫자의 경우 공백 대신 0을 채우는 것은 물론, 인덱스 기능과 좌우 정렬까지 가능하다.
인덱스 기능
A = 4
B = 12
C = 'hi'
D = 3.14159
print('{3} {0} {1} {2}' .format(A,B,C,D)) # 인덱싱 기능. D(=3.14159), A(=4), B(=12), C(='hi') 순으로 출력된다.
결과 :
3.14159 4 12 hi
좌우 정렬을 포함한 자릿수 지정 기능
A = 4
B = 12
C = 'hi'
D = 3.14159
print("'{:3}'" .format(A)) # 오른쪽 정렬로 공간 3을 만듦. (기본 셋팅은 오른쪽 정렬)
print("'{:>3}'" .format(A)) # 오른쪽 정렬로 공간 3을 만듦.
print("'{:>03}'" .format(A)) # 위에꺼에서 기본 공간의 나머지를 '0'으로 채운다. (0 이외의 숫자는 불가)
print("'{:<3}'" .format(A)) # 왼쪽 정렬로 공간 3을 만듦.
print("'{:<03}'" .format(A)) # 위에꺼에서 기본 공간의 나머지를 '0'으로 채운다. (0 이외의 숫자는 불가)
print()
print("'{:>3}'" .format(B)) # 오른쪽 정렬로 공간 3을 만듦.
print("'{:<3}'" .format(B)) # 왼쪽 정렬로 공간 3을 만듦.
print()
print("'{:>3}'" .format(C)) # 오른쪽 정렬로 공간 3을 만듦.
print("'{:<3}'" .format(C)) # 왼쪽 정렬로 공간 3을 만듦.
print()
print("'{:>7}'" .format(D)) # 3(1) + .(1) + .14159(5) = 기본 공간 7
print("'{:>8}'" .format(D)) # 오른쪽 정렬하고 기본 공간 8을 만드니 앞에 공백이 하나 생긴다.
print("'{:<8}'" .format(D)) # 왼쪽 정렬하고 기본 공간 을를 만드니 뒤에 공백이 하나 생긴다.
print()
print("'{:>4}'" .format(D)) # 오픈쪽 정렬하고 기본 공간 4를 만들었으나 초과하므로 의미 없음.
print("'{:>.4}'" .format(D)) # 소수점 포함 기본 공간을 4로 제한. (숫자를 소수점 포함 4자리까지 표기. 이때는 .의 개수는 포함하지 않음.)
# 단, 기본 공간은 3(1) + .(1) + .142(3) = 5다.
print("'{:>6.4}'".format(D)) # 오른쪽 정렬하고 기본 공간 6을 만드니 앞에 공백이 하나 생긴다.
결과 :
' 4'
' 4'
'004'
'4 '
'400'
' 12'
'12 '
' hi'
'hi '
'3.14159'
' 3.14159'
'3.14159 '
'3.14159'
'3.142'
' 3.142'
% 포맷팅은 자료형을 한정하기 때문에 { } 포맷팅보다 속도가 더 빠르다고 합니다. 다만... 기본 쿼드코어 세상에 살면서 굳이 % 포맷팅을 쓰는 것 보다는 { } 포맷팅이 더 편해보입니다.
자바의 포맷팅과 비교해봅시다.
2020/04/25 - [개발자/Java] - Java (자바) 반올림(올림, 내림) 그리고 자릿수 맞추기(포맷팅)
'개발자 > Python' 카테고리의 다른 글
Python (파이썬) 공공데이터 수집 (CSV 파일데이터) (0) | 2020.05.05 |
---|---|
Python (파이썬) .bat 실행파일 만들기 / Crontab 크론탭 (0) | 2020.05.05 |
Python (파이썬) 메일 보내기 (0) | 2020.05.04 |
Python (파이썬) Selenium 셀레니움 (0) | 2020.05.04 |
Python (파이썬) 웹 크롤링 기초 - Spark 퀴즈 정보 긁어오기 (Selenium O) (0) | 2020.05.04 |