'%'를 사용한 포멧팅
변수 타입에 따라서 %s, %d, %f 구분해서 써줘야 함
기본적으로 %s는 문자열, %d는 정수, %f는 실수를 받아온다.
아래 예제에서 %f는 하나의 변수를 그대로 받아온 것이 아니라, one_length와 E의 곱의 결과를 받아왔다. 즉 포메팅을 하면서 연산의 결과를 받아올 수도 있다. 그리고 %f와 %.2f의 차이는 %.2f는 실수를 받아올 때 소수점 둘째 자리까지만 표현되도록 하라는 의미다 즉 %.3f라고 되어있으면 소수점 셋째자리까지 표현된다.
something = '볼펜'
EA = 2
one_length = 5.343
scale = 'cm'
print('%s %d개의 길이는 %f%s 입니다.' % (something, EA, one_length*EA, scale))
#실수 소수점 자릿 수 맞추기
print('%s %d개의 길이는 %.2f%s 입니다.' % (something, EA, one_length*EA, scale))
// 볼펜 2개의 길이는 10.686000cm 입니다.
// 볼펜 2개의 길이는 10.69cm 입니다.
예시 2)
%와 d 사이에 숫자는 포메팅을 통해 표현되는 숫자나 문자의 자릿수를 의미한다. 즉 %6d는 111을 표현하되 총 여섯 자리를 차지하라는 뜻이다 그리고 기본적으로 오른쪽 정렬이 된다.
이 때 %06d라고 적으면 총 6자리 중에 오른쪽 정렬로 포메팅하는 숫자를 표현하고 남는 자리는 0으로 채운다 그래서 000111 이라고 표현이 되었다.
%6.2f 라고 하면 총 6자리를 차지하되, 소수점 이하 둘째자리까지만 표현하라는 의미가 된다. 이 때에도 %06.2f 라고 하면 총 6자리 중에 빈자리에 0을 채워넣는다, 그래서 011.12라고 표현이 되었다.
print(1234567890) #자릿수를 표현하기 위해서 적음
print('%6d'%(111)) # 6자리를 가진다.
print('%06d'%(111)) # 6자리를 가지고, 빈자리를 0으로 채운다.
print('%6.2f'%(11.123124)) # 총 6자리 가지고 소수점 이하 둘째자리까지 표현
print('%06.2f'%(11.123124)) # 총 6자리 가지고 소수점 이하 둘째자리까지 표현, 빈자리는 0 채움
// 1234567890
// 111
// 000111
// 11.12
// 011.12
'{}'을 이용한 포메팅
기본적으로 % 포메팅과 거의 유사하지만 {}을 사용하면 포메팅하는 값의 데이터 타입에 관계 없이 써주기만 하면 된다. 또한 {:.2f}라고 표현함으로서 실수를 표현할 때 소수점 아래 둘째 자리까지만 표현되도록 반올림을 한다. {:.3f}라고 하면 소수점 아래 셋째 자리까지 표현 된다.
something = '볼펜'
EA = 2
one_length = 5.343
scale = 'cm'
print('{} {}개의 길이는 {}{} 입니다.'.format(something, EA, one_length*EA, scale))
#실수 포맷팅 소수점 반올림 하기
print('{} {}개의 길이는 {:.2f}{} 입니다.'.format(something, EA, one_length*EA, scale))
// 볼펜 2개의 길이는 10.686cm 입니다.
// 볼펜 2개의 길이는 10.69cm 입니다.
맨 윗 줄의 1234567890은 자릿수를 표현하기 위함이다.
{:>3} 이라고 적으면 포메팅하는 데이터를 표현할 때 3자리를 차지하라는 의미가 되고, '>'가 있음으로써 오른쪽 정렬을 진행하게 된다. '<'은 왼쪽 정렬, '^'은 가운데 정렬을 해준다.
{:0>3} 과 같이 :과 정렬 기호(<,>,^) 사이에 0을 넣어주면 미리 차지해놓은 3자리 중에 빈자리를 0으로 채운다.
print(1234567890) #자릿 수 표현 위함
print('{:>3}'.format('5')) # >는 오른쪽정렬
print('{:<3}'.format('5')) # <는 왼쪽정렬
print('{:^3}'.format('5')) # ^는 가운데정렬
print('{:0>3}'.format(5)) # 빈자리를 0으로 채울수도 있음
// 1234567890
// 5
// 5
// 5
// 005
{:>10} 이라 함은 10 자리를 차지하고 오른쪽 정렬을 해서 표현하라는 의미다.
{:<10f}와 같이 f를 넣어주면 정수 5를 표현할 때도 실수로 표현하고 기본적으로 소수점 6자리 까지 표현함을 확인할 수 있다. '<'가 들어갔기 때문에 왼쪽 정렬을 했다.
{:^10.2f}는 일단 '^'가 있으니 가운데 정렬이고, 10이 있으니 10자리를 차지한다. .2f가 있으니 소수점 둘째 자리까지만 표현한다. 이렇게 가운데 정렬을 할 때는 소수점과 소수점 아래 자릿수까지 다 고려해서 가운데 정렬을 진행한다.
f-string
f-string 방법은 문자열 가장 앞에 f를 붙여주고 시작한다, 그리고 기존 {} 포메팅에서는 {}로 위치만 잡아주고, 각각의 {}에 어떤 값이 들어갈지는 맨 뒤에 순서대로 적어줬다, 반면에 f-string은 바로바로 {}을 쓰고 그 안에 어떤 값을 이 자리에 표현할지 적어준다. 그래서 굉장히 직관적으로 어떤 값이 올지 바로 알 수 있다.
이러한 특징 때문에 남이 작성해놓은 코드를 분석하거나 내가 작성하고도 시간이 오래 지난 후에 다시 봤을 때 해석하기가 굉장이 용이하고 문자열이 길어지거나 포메팅 해야되는 값이 많아지면 {} 포메팅의 경우 문자열 뒤에 모아놓은 값들을 1대1 매칭하기가 쉽지 않을 수 있지만 f-string은 바로바로 적어서 문자열이 길어져도, 포메팅하는 값이 많아져도 헷갈리지 않고 작성할 수 있다는 장점이 있다.
something = '볼펜'
EA = 2
one_length = 5.343
scale = 'cm'
print(f'{something} {EA}개의 길이는 {one_length*EA}{scale} 입니다.')
print(f'{something} {EA}개의 길이는 {one_length*EA:.1f}{scale} 입니다.')
출처: https://firedino.tistory.com/56 [F.I.R.E.를 꿈꾸는 공룡 _ FIRE DINO (파공):티스토리]
// 볼펜 2개의 길이는 10.686cm 입니다.
// 볼펜 2개의 길이는 10.7cm 입니다.
기본적으로 {} 포메팅의 특성을 그대로 가진다. {} 안에 받아올 변수명을 입력해주고 그 우측으로 여러 특성을 지정해준다.
f'{char_a:>5}' 은 : 이후에 >이 있으니 오른쪽 정렬이고 5가 있으니 5 자리를 차지한다.
f'{int_a:0<5}' 의 경우 : 과 < 사이에 0이 들어갔지만 미리 확보해놓은 5자리 중에서 왼쪽 정렬로 값을 표현하고 남은 빈자리를 0으로 채워주게 된다.
char_a = '5'
int_a = 5
'''기본적으로 {} 포맷팅의 특성을 그대로 가짐'''
print(1234567890)
print(f'{char_a:>5}') # >는 오른쪽정렬
print(f'{char_a:<5}') # <는 왼쪽정렬
print(f'{char_a:^5}') # ^는 가운데정렬
print(f'{int_a:0<5}')# <는 왼쪽정렬, 빈자리를 0으로 채울수도 있음
f'{int_a:>10f}' 와 같이 {} 안에 f라고 타입을 지정해주면 정수를 받아와도 실수로 표현을 해준다. 기본적으로 소수점 아래 6자리까지 표현한다.
f'{int_a:^10.2f}' 의 경우 포메팅할 변수명 우측에 :을 적고 ^이 있으니 가운데 정렬, 10이 있으니 총 10자리를 차지한다. .2f가 있으니 실수로 표현하되 소수점 아래 둘째 자리까지 표현하게 된다. 가운데 정렬을 할 때는 역시 소수점과 소수점 아래 자리들까지 함께 고려해서 표현한다.
int_a = 5
print(1234567890)
print(f'{int_a:>10f}') # >는 오른쪽정렬, 정수를 넣어도 f로 포맷팅하면 실수로 표현
print(f'{int_a:^10.2f}') # ^는 가운데정렬, 10을 썼으니 10자리 기준 가운데 정렬, 소수점 2자리 감안해서 가운데 정렬
// 1234567890
// 5.000000
// 5.00
'프로그래밍 언어 > Python' 카테고리의 다른 글
[Python] Dictionary - 딕셔너리 (0) | 2024.08.26 |
---|---|
[Python] 아스키 코드 (Ascii Code) 사용하기 (0) | 2024.08.05 |
[Python] enum형 (0) | 2024.07.16 |
[Python] Encrypt / Decrypt (0) | 2024.07.10 |
[Python] 비슷한 연산자의 차이 (is, ==, and, &, or, |) (0) | 2024.07.09 |