출력 형식 지정하기
%문자
형식 지정 문자 | 설명 |
%d | decimal, 10진 정수 |
%f | float, 10진 실수 |
%o | octal, 8진 정수 |
%x | hexadecimal, 16진 정수 |
%s | string, 문자열 |
print("%s 미세먼지 등급:%d 초미세먼지 등급:%d" % ("영동대로", 1, 1))
print("%s 미세먼지 등급:%d 초미세먼지 등급:%f" % ("영동대로", 1, 1))
print("%s 미세먼지 등급:%d 초미세먼지 등급:%f" % ("영동대로", 2.45, 1))
print("dec: %d, oc: %o, hex: %x" % (42, 42, 42))
Out:
영동대로 미세먼지 등급:1 초미세먼지 등급:1
영동대로 미세먼지 등급:1 초미세먼지 등급:1.000000
영동대로 미세먼지 등급:2 초미세먼지 등급:1.000000
dec: 42, oc: 52, hex: 2a
어떤 값을 넣어도 형식 지정 문자에 맞추어 출력된다. 8진수나 16진수를 출력하고자 할 때도 직접 계산하지 않아도 된다.
%[flag][width][.precision]문자
print("%5s 미세먼지 등급:%d 초미세먼지 등급:%f" % ("영동대로", 1, 1))
print("%5s 미세먼지 등급:%d 초미세먼지 등급:%f" % ("서울역", 1, 1))
Out:
영동대로 미세먼지 등급:1 초미세먼지 등급:1.000000
서울역 미세먼지 등급:1 초미세먼지 등급:1.000000
width를 5로 지정해 문자열이 5칸을 차지하도록 정렬할 수 있다.
print("%-5s 미세먼지 등급:%d 초미세먼지 등급:%f" % ("영동대로", 1, 1))
print("%-5s 미세먼지 등급:%d 초미세먼지 등급:%f" % ("서울역", 1, 1))
Out:
영동대로 미세먼지 등급:1 초미세먼지 등급:1.000000
서울역 미세먼지 등급:1 초미세먼지 등급:1.000000
flag를 -로 하면 왼쪽으로 정렬된다. 반대로 +로 하면 오른쪽으로 정렬된다.
print("소수점 테스트 %.8f" % 3.1415926535897932384626433832795028841971)
print("%%표현 %.8f%%" % 3.1415926535897932384626433832795028841971)
Out:
소수점 테스트 3.14159265
%표현 3.14159265%
.precision은 소수점 아래 몇 자리까지 표현할지 지정하는 부분이다.
% 문자를 형식 지정 문자로 사용하지 않고 출력하려면 %%라고 쓰면 된다. \(백슬래쉬)의 경우에도 마찬가지로 \\라고 쓰면 이스케이프 시퀀스로 사용하지 않고 출력할 수 있다.
format()
print("{} Python!".format("Hello"))
Out:
Hello Python!
{중괄호} 부분이 format의 인자로 대체된다.
name = "영동대로"
pm10grade = 1
pm25grade = 1
print("{0} 미세먼지 등급:{1} 초미세먼지 등급:{2}".format(name, pm10grade, pm25grade))
Out:
영동대로 미세먼지 등급:1 초미세먼지 등급:1
이와 같이 변수를 format의 인자로 줄 수 있다. 여기서 {중괄호}의 index는 사용되지 않았으므로 없어도 된다.
print("{name} 미세먼지 등급:{pm10grade} 초미세먼지 등급:{pm25grade}"
.format(name="영동대로", pm10grade=2, pm25grade=2))
Out:
영동대로 미세먼지 등급: 2 초미세먼지 등급:2
이렇게 {중괄호} 마다 이름을 붙여 매개변수처럼 사용할 수도 있다.
표준 포맷 지정자의 문법
[[fill]align][#][width][grouping_option][.precision][type]
Type | 설명 |
b | 2진법 출력 |
d | 10진 정수 |
o | 8진 정수 |
x | 16진 정수 |
s | 문자열 |
f | 고정 소수점 실수 |
자세한 내용은 여기에서 볼 수 있다.
name = "영동대로"
pm10grade = 1
pm25grade = 1
print("{0:<10} 미세먼지 등급: {1} 초미세먼지 등급:{2}".format(name, pm10grade, pm25grade)) # 왼쪽 정렬
print("{0:>10} 미세먼지 등급: {1} 초미세먼지 등급:{2}".format(name, pm10grade, pm25grade)) # 오른쪽 정렬
print("{0:^10} 미세먼지 등급: {1} 초미세먼지 등급:{2}".format(name, pm10grade, pm25grade)) # 가운데 정렬
print("{0:=^10} 미세먼지 등급: {1} 초미세먼지 등급:{2}".format(name, pm10grade, pm25grade)) # fill option
Out:
영동대로 미세먼지 등급: 1 초미세먼지 등급:1
영동대로 미세먼지 등급: 1 초미세먼지 등급:1
영동대로 미세먼지 등급: 1 초미세먼지 등급:1
===영동대로=== 미세먼지 등급: 1 초미세먼지 등급:1
Fill option은 빈 공간을 특정 문자로 채우는 기능이다.
print('{:,}'.format(1234567890))
Out:
1,234,567,890
Grouping option은 1000 단위마다 comma를 달아준다.
print("소수점 테스트 {0:10f}".format(3.1415926535897932384626433832795028841971))
print("소수점 테스트 {0:10.4f}".format(3.1415926535897932384626433832795028841971))
Out:
소수점 테스트 3.141593
소수점 테스트 3.1416
Precision을 지정하지 않으면 소수점 아래 6자리까지 출력된다. 두 번째 print 문은 10자리 공간에서 소수점 아래 4자리까지 표현하는 예이다. 정렬의 기본값은 오른쪽 정렬인 것도 알 수 있다.
print("int: {0:d}; oct:{0:o}; hex:{0:x}; bin:{0:b}".format(42))
print("int: {0:d}; oct:{0:#o}; hex:{0:#x}; bin:{0:#b}".format(42))
Out:
int: 42; oct:52; hex:2a; bin:101010
int: 42; oct:0o52; hex:0x2a; bin:0b101010
# option은 숫자 앞에 이 숫자가 몇진수로 표현된 숫자인지 표시해준다.
print("{0} 미세먼지 등급: {{{1}}} 초미세먼지 등급:{{{2}}}".format(name, pm10grade, pm25grade))
Out:
영동대로 미세먼지 등급: {1} 초미세먼지 등급:{1}
{중괄호}를 출력하려면 \나 %와 마찬가지로 두 번 써주면 된다.
f 문자열 포매팅 (Python 3.7 이상)
name = "영동대로"
pm10grade = 1
pm25grade = 1
print(f"{name} 미세먼지 등급: {pm10grade + 1} 초미세먼지 등급: {pm25grade + 2}")
print(f"{name:>10} 미세먼지 등급: {pm10grade + 1} 초미세먼지 등급: {pm25grade + 2}")
print(f"{name:=^10} 미세먼지 등급: {pm10grade + 1} 초미세먼지 등급: {pm25grade + 2}")
Out:
영동대로 미세먼지 등급: 2 초미세먼지 등급: 3
영동대로 미세먼지 등급: 2 초미세먼지 등급: 3
===영동대로=== 미세먼지 등급: 2 초미세먼지 등급: 3
f 문자열 포매팅은 변수를 중괄호 안에 바로 쓸 수 있고 중괄호 안에서 연산이 가능하다.
pi = 3.1415926535897932384626433832795028841971
print(f"소수점 테스트 {pi:10f}")
print(f"소수점 테스트 {pi:10.4f}")
Out:
소수점 테스트 3.141593
소수점 테스트 3.1416
fruit = {"사과": 5000, "바나나": 3000}
print(f"사과는 {fruit['사과']}원, 바나나는 {fruit['바나나']}원입니다")
print(f"사과는 {{{fruit['사과']}}}원, 바나나는 {{{fruit['바나나']}}}원입니다")
Out:
사과는 5000원, 바나나는 3000원입니다
사과는 {5000}원, 바나나는 {3000}원입니다
여러 줄(multi line) 문자열
multi_line_str = '''
파이썬에서 여러 줄의 문자열을
선언하는 방법입니다.
'''
print(multi_line_str)
Out:
파이썬에서 여러 줄의 문자열을
선언하는 방법입니다.
따옴표는 큰따옴표든 작은따옴표든 상관 없다.
'파이썬 Python' 카테고리의 다른 글
[Python] 중급 3강 정규 표현식 Regular expressions (0) | 2021.02.28 |
---|---|
[Python] 중급 1 문자열 (0) | 2021.02.25 |
[Python] 초급 12 클래스 예제 (0) | 2021.02.21 |
초급 10, 11 클래스와 상속 (0) | 2021.01.23 |
초급 9 XML (0) | 2021.01.15 |