한 걸음씩 기록하며
#.3 String Formatting 본문
1. String Formatting
- 문자열 포맷팅(String Formatting) 이란?
문자열에 특정 변수의 값을 넣어주기 위하여 사용하는 것이다. 문자열을 효율적으로 정리할 때 많이 사용한다.
💡 파이썬에서 문자열 포매팅 방법은 3가지가 있다.
- format 함수를 이용한 방법 (str.format)
- %와 서식기호를 이용한 방법
- f-string을 이용한 방법
1.1 format 함수
- format 함수 사용법
- format 함수는 중괄호 {} 안에 포매팅을 지정하고, format 함수의 인자로 값들을 넣는다.
'{index1},{index2}'.format(값0,값1)
#예시 : 곱하기 계산기
a = 2
b = 3
s = '구구단 {0} * {1} = {2}'.format(a,b,a*b)
print(s)
2. format 함수 예제 1 (기본)
1) 직접 대입, 변수로 대입, 이름으로 대입
# 직접 대입하기
s1 = 'name : {0}'.format('blockDmask')
print(s1)
# 변수로 대입하기
age =55
s2 = 'age : {0}'.format(age)
print(s2)
#이름으로 대입하기
s3 = 'number : {num}, gender : {gen}'.format(num=1234, gen='남성')
print(s3)
name : blockDmask
age : 55
number : 1234, gender : 남성
2) format 문자열의 중괄호의 인덱스 사용
# 인덱스를 입력하지 않으면? 인자 순서대로 입력됨
s4 = 'name : {}, city : {}'.format('Block','seoul')
print(s4)
# 인덱스 순서가 바뀌면?
s5 = 'song1 : {1}, song2 :{0}'.format('park','lee')
#순서에 맞게 인자가 입력
print(s5)
#인덱스를 중복해서 입력하면?
s6 = 'test1 : {0}, test2 : {1}, test3 : {0}'.format('인덱스0','인덱스1')
# 중복되도 인자 값을 찾아간다
print(s6)
name : Block, city : seoul
song1 : lee, song2 :park
test1 : 인덱스0, test2 : 인덱스1, test3 : 인덱스0
3) format 함수를 사용할 때 중괄호가 나오게 하려면?
- {{}} - 중괄호를 두번 쓰면 중괄호가 나온다. 중괄호 안에 인자가 들어가려면 세번 써야한다.
s1 = 'this is value {{{0}}}'.format(12)
print(s1)
3. format 함수 에제 (응용)
- 문자열 정리하기 : 공백
s9 = 'this is {0:<30} | done {1:<15} |'.format('left','a')
print(s9)
s10 = 'this is {0:>30} | done {1:>15} |'.format('right','b')
print(s10)
s11 = 'this is {0:^30} | done {1:^15} |'.format('center','c')
print(s11)
this is left | done a |
this is right | done b |
this is center | done c |
- {0:<30} 은 {0}의 값을 30자리로 표현할거다 라는 뜻이고, :<은 왼쪽 정렬을 하겠다는 것이다.
- :^ 은 가운데 정렬을 뜻한다.
- 문자열 정리하기 2 : 값 채우기
s12 = 'this is {0:-<30} | done {1:0<15} |'.format('left','a')
print(s12)
s13 = 'this is {0:->30} | done {1:0>15} |'.format('rigth','b')
print(s13)
s14 = 'this is {0:-^30} | done {1:0^15} |'.format('center','c')
print(s14)
this is left-------------------------- | done a00000000000000 |
this is -------------------------rigth | done 00000000000000b |
this is ------------center------------ | done 0000000c0000000 |
- <, >, ^ 기호 앞에 특정 문자를 입력하면 공백 부분이 다른 것으로 채워진다.
3) 자리수와 소수점 표현하기
s15 = '정수 3자리 : {0:03d}, {1:03d}'.format(12345, 12)
print(s15)
s16 = '아래 2자리 : {0:0.2f}, 아래 5자리 : {1:0.5f}'.format(123.1234567, 3.14)
print(s16)
정수 3자리 : 12345, 012
아래 2자리 : 123.12, 아래 5자리 : 3.14000
- s15 : 정수의 자리수를 표현할 때는 '0Nd'로 표현한다. N은 원하는 자릿수를 입력하면 된다. 자릿수가 부족한 경우는 자동으로 0으로 채워진다.
- s16 : 소수점 자리수를 표현할 때는 '0.Nf'로 표현한다. N은 소수점 아래 표시할 자릿수를 입력하면 된다. 이것도 마찬가지로 남는 부분은 0으로 표시된다.
4) 구구단 프로그램
for a in range (2,4) :
for b in range (1, 10) :
print('{0} * {1} = {2:2}'.format(a, b, a*b))
#.1.2 파이썬 % 서식 기호
- 파이썬 문자열 포매팅 %에 대해서
- %
- % 서식 문자의 모양은, % 기호 뒤에 자료형을 가리키는 문자가 온다.
- %s → 문자열
- %d → 정수
- %f → 실수
num = 50
s = 'my age %d' % num
print(s)
my age 50
%o → 8진수
%x → 16진수
%% → 문자 % 표현
2. % 예제
- 문자열, 정수, 실수를 %로 포매팅 해보기
names = ['kim', 'park', 'lee']
for name in names :
print('my name is %s' % name)
money = 10000
s2 = 'give me %d won' % money
print(s2)
d = 3.141592
print('value %f' % d)
my name is kim
my name is park
my name is lee
give me 10000 won
value 3.141592
- 두개 이상의 변수를 포매팅 하기
s1 = 'my name is %s. age : %d' % ('haksae', 100)
print(s1)
age = 880
money = 20000
name = 'lee'
weight = 70
etc = 'soccer'
s2 = 'my name is %s, age : %d, weight : %f, money : %d, etc : %s' % (name, age, weight, money, etc)
print(s2)
my name is haksae. age : 100
my name is lee, age : 880, weight : 70.000000, money : 20000, etc : soccer
- 출력이 많을 때는 ()을 이용하면 된다.
- % 포맷팅은 타입을 정해주기 때문에 정확해보이지만, 불편한 점이다.
→ 이것을 개선하기 위해 str.format 형식이 나왔고, f-string이 나오게 되었다.
#.1.3 f-string format
- f-string이란?
- % 포매팅과 str.fomat 방법보다 더 최근에 나온 format (python 3.6부터)
- 선언
f'(문자열 {변수} 문자열'
- f와 {}만 사용하면 된다.
- 문자열 맨 앞에 f를 붙여주고, 중괄호 안에 직접 변수 이름이나 출력하고 싶은 것을 바로 넣으면 된다.
s = 'coffee'
n = 5
result1 = f'저는 {s}를 좋아합니다. 하루 {n}잔 마셔요'
print(result1)
저는 coffee를 좋아합니다. 하루 5잔 마셔요
2. 예제
- f-string과 정렬
- % 와 동일하다.
s1 = 'left'
result1 = f'|{s1:<15}'
print(result1)
s2 = 'center'
result2 = f'|{s2:^15}|'
print(result2)
s3 = 'right'
result3 = f'|{s3:>15}|'
print(result3)
|left
| center |
| right|
- 중괄호 출력 방법
- %와 동일하다.
- {{ }} → 중괄호만 출력
- {{{ 내용 }}} → { 내용 } 출력
3. f-string과 dictionary
d = {'name' : 'haksae', 'gender' : 'man', 'age' : 100}
result = f'my name {d["name"]}, gender {d["gender"]}, age {d["age"]}'
print(result)
my name haksae, gender man, age 100
- f와 {dic_name["key"]}
4. f-string과 list
n = [100, 200, 300]
print(f'list : {n[0]}, {n[1]}, {n[2]}')
for v in n :
print(f'list with for : {v}')
list : 100, 200, 300
list with for : 100
list with for : 200
list with for : 300
- f와 {list_name[인덱스]}
'Python' 카테고리의 다른 글
#.6 Function & Lambda (0) | 2021.12.20 |
---|---|
#.5 Control of Flow (0) | 2021.12.20 |
#.4 연산자 (0) | 2021.12.20 |
#. 2 자료형 기본 (0) | 2021.12.20 |
#.1 Identifier, Variable, Constant, Literal (0) | 2021.12.20 |
Comments