% Formatting
print 포맷팅에서%s는 문자열 데이터 타입의 값을%d는 정수형 데이터 타입 값의 출력을 의미한다.
name1 = "김민수"
age1 = 10
name2 = "이철희"
age2 = 13
print("이름: %s 나이: %d" % (name1, age1))
print("이름: %s 나이: %d" % (name2, age2))
format() Method
문자열의 포맷 메서드는 타입과 상관없이 값이 출력될 위치에 { }를 적어주면 된다. format( ) 안의 순서대로 출력되게 된다.
name1 = "김민수"
age1 = 10
name2 = "이철희"
age2 = 13
print("이름: {} 나이: {}".format(name1, age1))
print("이름: {} 나이: {}".format(name2, age2))
f-string
f-string은 파이썬 3.6부터 지원하며 문자열 앞에 f가 붙은 형태이다. f-string을 사용하면 {변수} 와 같은 형태로 문자열 사이에 타입과 상관없이 값을 출력할 수 있다.
name1 = "김민수"
age1 = 10
name2 = "이철희"
age2 = 13
print(f"이름: {name1} 나이: {age1}")
print(f"이름: {name2} 나이: {age2}")
다양한 Formatting 예제
Padding, Aligning
# 1. 오른쪽 정렬
string = 'test'
print('%10s' % (string))
print('{:>10}'.format(string))
print(f'{string:>10}')
# 1. 출력
test
test
test
# 2. 왼쪽 정렬
string = 'test'
print('%-10s' % (string))
print('{:10}'.format(string))
print(f'{string:10}')
# 2. 출력
test
test
test
# 3. Padding을 공백 대신 특정 문자로 채우기
string = 'test'
print('{:*>10}'.format('test'))
print(f'{string:*>10}')
print('{:*<10}'.format('test'))
print(f'{string:*<10}')
# 3. 출력
******test
******test
test******
test******
문자열 자르기
# 1. 문자열 길이 5개로 제한
string = 'xylophone'
print('%-.5s' % (string))
print('{:.5}'.format(string))
print(f'{string:.5}')
# 1. 출력
xylop
xylop
xylop
숫자 출력
# 1. float 출력 (float는 소수 6자리까지 표현)
number = 3.141592653589793
print('%f' % (number))
print('{:f}'.format(number))
print(f'{number:f}'.format(number))
print(f'{number}')
# 1. 출력
3.141593
3.141593
3.141593
3.141592653589793
# 2. 소수 아래 2자리까지만 출력
number = 3.141592653589793
print('%.2f' % (number))
print('{:.2f}'.format(number))
print(f'{number:.2f}')
# 2. 출력
3.14
3.14
3.14
# 3. Integer에 Padding 적용
number = 12
print('%04d' % (number))
print('{:04d}'.format(number))
print(f'{number:04d}')
# 3. 출력
0012
0012
0012
# 4. 양수에 +를 함께 출력
number = 12
print('%+04d' % (number))
print('{:+04d}'.format(number))
print(f'{number:+04d}')
# 4. 출력
+012
+012
+012
str, repr 출력
class Comedian:
def __init__(self, first_name, last_name, age):
self.first_name = first_name
self.last_name = last_name
self.age = age
def __str__(self):
return f"{self.first_name} {self.last_name} is {self.age}."
def __repr__(self):
return f"{self.first_name} {self.last_name} is {self.age}. Surprise!"
new_comedian = Comedian("Eric", "Idle", "74")
print("%s" % (new_comedian))
print("%r" % (new_comedian))
print("{0!s}".format(new_comedian))
print("{0!r}".format(new_comedian))
print(f'{new_comedian}')
print(f'{new_comedian!r}')
# 출력
Eric Idle is 74.
Eric Idle is 74. Surprise!
Eric Idle is 74.
Eric Idle is 74. Surprise!
Eric Idle is 74.
Eric Idle is 74. Surprise!
Named placeholder
data = {'first': 'Hodor', 'last': 'Hodor!'}
print('%(first)s %(last)s' % data)
print('{first} {last}'.format(**data))
# 출력
Hodor Hodor!
Hodor Hodor!
# 3.2 이상 버전에서 아래도 적용 가능
print('{first} {last}'.format_map(data))
# 출력
Hodor Hodor!
Get item, Get attribute
# 1. 아이템을 객체로 부터 가져와서 formatting에 적용하는 예제입니다.
# f-string의 경우 내부에서 map의 key를 입력할 때 '(작은따옴표)을 사용하기 때문에 문자열은 "(큰따옴표)로 표현해야 합니다. (반대로 적용해도 됩니다.)
person = {'first': 'Jean-Luc', 'last': 'Picard'}
print('{p[first]} {p[last]}'.format(p=person))
print(f"{person['first']} {person['last']}")
# 1. 출력
Jean-Luc Picard
Jean-Luc Picard
# 2. 배열에 대한 예제
data = [4, 8, 15, 16, 23, 42]
print('{d[4]} {d[5]}'.format(d=data))
print(f'{data[4]} {data[5]}')
# 2. 출력
23 42
23 42
# 3. 클래스에 대한 예제
class Plant(object):
type = 'tree'
kinds = [{'name': 'oak'}, {'name': 'maple'}]
print('{p.type}: {p.kinds[0][name]}'.format(p=Plant()))
p = Plant()
print(f"{p.type}: {p.kinds[0]['name']}")
# 3. 출력
tree: oak
tree: oak
Datetime
from datetime import datetime
print('{:%Y-%m-%d %H:%M}'.format(datetime(2001, 2, 3, 4, 5)))
date = datetime(2001, 2, 3, 4, 5)
print(f"{date:%Y-%m-%d %H:%M}")
# 출력
2001-02-03 04:05
2001-02-03 04:05
Parameterized format
# 1. 정렬과 padding을 적용하는 예제
p_align = '^'
p_width = '10'
string = 'test'
print('{:{align}{width}}'.format(string, align=p_align, width=p_width))
print(f'{string:{p_align}{p_width}}')
# 1. 출력
test
test
# 2. datetime에 적용한 예제
from datetime import datetime
dt = datetime(2001, 2, 3, 4, 5)
print('{:{dfmt} {tfmt}}'.format(dt, dfmt='%Y-%m-%d', tfmt='%H:%M'))
print(f'{dt:{"%Y-%m-%d"} {"%H:%M"}}')
# 2. 출력
2001-02-03 04:05
2001-02-03 04:05
[출처] : https://codechacha.com/ko/python-string-formatting/
'Python 프로그래밍' 카테고리의 다른 글
[Python] enumerate 함수 (0) | 2022.04.28 |
---|---|
[Python] 익명함수 lambda (0) | 2022.04.26 |
[Python] List & Dictionary & Tuple & Set (0) | 2022.04.24 |
[Python] Iterator & Generator (0) | 2022.04.22 |
[Python] 가상환경 (0) | 2022.04.18 |