본문 바로가기
BASIC

문자열 포매팅

by 자동매매 2023. 11. 25.

 

문자열 서식 지정자와 포매팅 사용하기

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

댓글