문자열 서식 지정자와 포매팅 사용하기
1. 서식 지정자
1) 서식 지정자로 문자열 넣기
- '%s' % '문자열'
서식 지정자는 %로 시작하고 자료형을 뜻하는 문자가 붙습니다.
>>> 'I am %s.' % 'james'
'I am james.'
>>> name = 'maria'
>>> 'I am %s.' % name
'I am maria.'
2) 서식 지정자로 숫자 넣기
- '%d' % 숫자
>>> 'I am %d years old.' % 20
'I am 20 years old.'
식 지정자로 소수점 표현하기
- '%f' % 숫자
>>> '%f' % 2.3
'2.300000'
%f는 기본적으로 소수점 이하 6자리까지 표시하므로 2.3은 2.300000으로 표시됩니다.
- '%.자릿수f' % 숫자
>>> '%.2f' % 2.3
'2.30'
>>> '%.3f' % 2.3
'2.300'
3) 서식 지정자로 문자열 정렬하기
% 뒤에 숫자를 붙이면 문자열을 지정된 길이로 만든 뒤 오른쪽으로 정렬하고 남는 공간을 공백으로 채웁니다.
기본 : 오른쪽 정렬 / -길이 : 왼쪽 정렬
- %길이s
- %길이d
- %길이.자릿수f
>>> '%10s' % 'python'
' python'
>>> '%10d' % 150
' 150'
>>> '%10d' % 15000
' 15000'
>>> '%10.2f' % 2.3
' 2.30'
>>> '%10.2f' % 2000.3
' 2000.30'
>>> '%-10s' % 'python'
'python '
4) 서식 지정자로 문자열 안에 값 여러 개 넣기
- '%d %s' % (숫자, '문자열')
>>> 'Today is %d %s.' % (3, 'April')
'Today is 3 April.'
서식 지정자 자료형
자료형 | 설명 |
s | 문자열 |
b | 2진수 |
c | 문자 |
d | 10진 정수 |
o | 8진 정수, 예) '%o' % 8은 '10' |
x | 16진 정수, 0~9, a~f, 예) '%x' % 254는 'fe' |
X | 16진 정수, 0~9, A~F, 예) '%X' % 254는 'FE' |
e | 실수 지수 표기법, 예) '%e' % 2.3은 '2.300000e+00' |
E | 실수 지수 표기법, 예) '%E' % 2.3은 '2.300000E+00' |
f | 실수 소수점 표기 |
F | 실수 소수점 표기, f와 같음, nan은 NAN, inf는 INF로 표시(nan은 숫자가 아니라는 뜻, inf는 무한대) |
g | 실수 일반 형식, 예) '%g' % 2.3e-10은 '2.3e-10' |
G | 실수 일반 형식, 예) '%G' % 2.3e-10은 '2.3E-10' |
% | % 문자 표시 |
2. format 메서드 사용하기
파이썬은 문자열을 만들 때 서식 지정자 방식보다 더 간단한 문자열 포매팅(string formatting)을 제공합니다.
문자열 포매팅은 { }(중괄호) 안에 포매팅을 지정하고 format 메서드로 값을 넣습니다.
- '{인덱스}'.format(값)
>>> 'Hello, {0}'.format('world!')
'Hello, world!'
>>> 'Hello, {0}'.format(100)
'Hello, 100'
1) format 메서드로 값을 여러 개 넣기
>>> 'Hello, {0} {2} {1}'.format('Python', 'Script', 3.6)
'Hello, Python 3.6 Script'
format 메서드로 같은 값을 여러 개 넣기
>>> '{0} {0} {1} {1}'.format('Python', 'Script')
'Python Python Script Script'
2) format 메서드에서 인덱스 생략하기
만약 { }에서 인덱스를 생략하면 format에 지정한 순서대로 값이 들어갑니다.
>>> 'Hello, {} {} {}'.format('Python', 'Script', 3.6)
'Hello, Python Script 3.6'
3) format 메서드에서 인덱스 대신 이름 지정하기
{ }에 인덱스로 순서를 지정하려니 조금 헷갈리죠? { }에 인덱스 대신 이름을 지정할 수도 있습니다.
>>> 'Hello, {language} {version}'.format(language='Python', version=3.6)
'Hello, Python 3.6'
4) 문자열 포매팅에 변수를 그대로 사용하기
파이썬 3.6부터는 문자열을 만드는 더 간단한 방법을 제공합니다. 다음과 같이 변수에 값을 넣고 { }에 변수 이름을 지정하면 됩니다. 이때는 문자열 앞에 포매팅(formatting)이라는 뜻으로 f를 붙입니다.
>>> language = 'Python'
>>> version = 3.6
>>> f'Hello, {language} {version}'
'Hello, Python 3.6'
{ } 중괄호 자체를 출력할 때는 {{, }}처럼 중괄호를 두 번 사용하면 됩니다.
>>> '{{ {0} }}'.format('Python')
'{ Python }'
5) format 메서드로 문자열 정렬하기
- '{인덱스:<길이}'.format(값)
- '{인덱스:>길이}'.format(값)
>>> '{0:<10}'.format('python')
'python '
>>> '{0:>10}'.format('python')
' python'
>>> '{:>10}'.format('python')
' python'
6) 숫자 개수 맞추기
- '%0개수d' % 숫자
- '{인덱스:0개수d}'.format(숫자)
- '%0개수.자릿수f' % 숫자
- '{인덱스:0개수.자릿수f} '.format(숫자)
>>> '%03d' % 1
'001'
>>> '{0:03d}'.format(35)
'035'
>>> '%08.2f' % 3.6
'00003.60'
>>> '{0:08.2f}'.format(150.37)
'00150.37'
7) 채우기와 정렬을 조합해서 사용하기
채우기, 정렬, 길이, 자릿수, 자료형 순으로 지정
- '{인덱스:[[채우기]정렬][길이][.자릿수][자료형]}'
그럼 길이를 10으로 만든 뒤 왼쪽, 오른쪽으로 정렬하고 남는 공간은 0으로 채워보겠습니다.
>>> '{0:0<10}'.format(15) # 길이 10, 왼쪽으로 정렬하고 남는 공간은 0으로 채움
'1500000000'
>>> '{0:0>10}'.format(15) # 길이 10, 오른쪽으로 정렬하고 남는 공간은 0으로 채움
'0000000015'
>>> '{0:0>10.2f}'.format(15) # 길이 10, 오른쪽으로 정렬하고 소수점 자릿수는 2자리
'0000015.00'
>>> '{0: >10}'.format(15) # 남는 공간을 공백으로 채움
' 15'
>>> '{0:>10}'.format(15) # 채우기 부분을 생략하면 공백이 들어감
' 15'
>>> '{0:x>10}'.format(15) # 남는 공간을 문자 x로 채움
'xxxxxxxx15'
숫자 중에서 금액은 천단위로 ,(콤마)를 넣죠? 파이썬에서는 간단하게 천단위로 콤마를 넣을 수 있습니다.
먼저 format 내장 함수를 사용하는 방법입니다. 다음과 같이 format 함수에 숫자와 ','를 넣어줍니다.
format(숫자, ',')
>>> format(1493500, ',')
'1,493,500'
>>> '%20s' % format(1493500, ',') # 길이 20, 오른쪽으로 정렬
' 1,493,500'
포매팅에서 콤마를 넣으려면 다음과 같이 :(콜론)뒤에 ,(콤마)를 지정하면 됩니다.
>>> '{0:,}'.format(1493500)
'1,493,500'
만약 정렬을 하고 싶다면 정렬 방향과 길이 뒤에 콤마를 지정해줍니다.
>>> '{0:>20,}'.format(1493500) # 길이 20, 오른쪽으로 정렬
' 1,493,500'
>>> '{0:0>20,}'.format(1493500) # 길이 20, 오른쪽으로 정렬하고 남는 공간은 0으로 채움
'000000000001,493,500'
[ 심화학습 ]
표준 입력으로 물품 가격 여러 개가 문자열 한 줄로 입력되고, 각 가격은 ;(세미콜론)으로 구분되어 있습니다. 입력된 가격을 높은 가격순으로 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다). 이때 가격은 길이를 9로 만든 뒤 오른쪽으로 정렬하고 천단위로 ,(콤마)를 넣으세요.
s = input()
L = sorted(list(map(int,s.split(';'))),reverse=True)
for i in L:
print(f'{i:>9,}')
51900;83000;158000;367500;250000;59200;128500;1304000
1,304,000
367,500
250,000
158,000
128,500
83,000
59,200
51,900
'BASIC' 카테고리의 다른 글
set (0) | 2023.11.27 |
---|---|
딕셔너리 응용하기 (1) | 2023.11.27 |
문자열 method (1) | 2023.11.25 |
2차원 리스트의 할당과 복사 알아보기 (1) | 2023.11.25 |
반복문으로 리스트 만들기 (0) | 2023.11.24 |
댓글