1) 문자열 포매팅 *formatting : 구성화
문자열 안의 특정한 값을 바꿀 때, 문자열 안에 어떤 값을 삽입하는 방법
- 숫자 바로 대입
=====%d(문자열 포맷 코드) : 숫자 삽입=====
>>> "I eat %d apples." % 3
'I eat 3 apples.'
- 문자열 바로 대입
=====%s : 문자열 삽입=====
>>> "I eat %s apples." % "five"
'I eat five apples.'
=====%s : 어떤 형태의 값이든 변환해 넣을 수 있음=====
>>> "I eat %s apples." % 3
'I eat 3 apples.'
>>> "I eat %s apples." % 3.234
'I eat 3.234 apples.'
# %s : % 뒤에 있는 3(정수)이나 3.234(부동소수)와 같은 값을 문자열로 바꾸어 대입하기 때문에 %d, %f를 사용하지 않아도 삽입 가능
- 숫자 값을 나타내는 변수로 대입
>>> number = 3
>>> "I eat %d apples." % number
'I eat 3 apples.'
- 2개 이상의 값 넣기
>>> number = 10
>>> day = "three"
>>> "I ate %d apples. so I was sick for %s days." % (number, day)
'I ate 10 apples. so I was sick for three days.'
[TIP] 문자열 포맷 코드
- 문자열에 대입할 수 있는 자료형에는 정수, 문자열 외에도 다양한 것이 있음
코드 | 설명 |
%s | 문자열(string) |
%c | 문자 1개(character) |
%d | 정수(integer) |
%f | 부동소수(floating-point) |
%o | 8진수 |
%x | 16진수 |
%% | Literal %(문자 % 그 자체) |
2) 포맷 코드 & 숫자 함께 사용
① 정렬과 공백
- "%ns" % "대입값" : 전체 길이 n개의 문자열 공간에서, 대입값을 오른쪽 정렬(나머지 앞 칸들은 공백)
>>> "%10s" % "hi"
' hi'
#전체 길이가 10개인 문자열 공간에서,
#대입값("hi")을 오른쪽 정렬 & 그 앞의 나머지 8칸은 공백으로 남겨둠
- "%-ns" % "대입값" : 전체 길이 n개의 문자열 공간에서, 대입값을 왼쪽 정렬(나머지 뒷 칸들은 공백)
>>> "%-10sjane." % 'hi'
'hi jane'
#hi를 왼쪽 정렬 & 나머지는 공백으로 채움
② 소수점 표현
- "%0.nf" % 소수 : 주어진 소수에서 소수점 n번째 자리까지 나타냄
>>> "%0.4f" % 3.42134234
'3.4213'
# "%m.nf"에서 m=0인 경우, 문자열's 길이에 상관하지 않겠다는 의미
- "%m.nf" % 소수 : 문자열's m개의 공간에서, 주어진 소수's 소수점 n번째 자리까지 나타냄(나머지 앞 칸들은 공백)
>>> "%10.4f" % 3.42134234
' 3.4213'
3) format 함수를 사용한 포매팅
문자열의 format 함수를 사용하면 좀 더 발전된 스타일로 문자열 포맷을 지정할 수 있음
- 숫자 바로 대입
>>> "I eat {0} apples".format(3)
'I eat 3 apples'
#"I eat {0} apples" 문자열 중 {0} 부분이 숫자 3으로 바뀜
- 문자열 바로 대입
>>> "I eat {0} apples".format("five")
'I eat five apples'
#"I eat {0} apples" 문자열 중 {0} 부분이 문자열 'five'로 바뀜
- 숫자 값을 가진 변수로 대입
>>> number = 3
>>> "I eat {0} apples".format(number)
'I eat 3 apples'
#"I eat {0} apples" 문자열 중 {0} 부분이 number 변수값 3으로 바뀜
- 2개 이상의 값 넣기
>>> number = 10
>>> day = "three"
>> "I ate {0} apples. so I was sick for {1} days.".format(number, day)
'I ate 10 apples. so I was sick for three days.'
#문자열의 인덱스 항목 {0}, {1}이 format 함수의 입력값으로 순서에 맞게 바뀜
- 이름으로 넣기
>>> "I ate {number} apples. so I was sick for {days} days.".format(number=1, day=3)
'I ate 10 apples. so I was sick for 3 days.'
#{0}, {1} 같은 인덱스 항목 대신 더 편리한 {name}을 사용
#{name}을 사용할 경우, format 함수에 name=value 형태의 입력값으로~
- 인덱스&이름 혼용해서 넣기
>>> "I ate {0} apples. so I was sick for {day} days.".format(10, day=3)
'I ate 10 apples. so I was sick for 3 days.'
- 왼쪽 정렬
>>> "{0:<10}".format("hi")
'hi '
#치환되는 문자열을 왼쪽으로 정렬(문자열 총 자릿수 10)
- 오른쪽 정렬
>>> "{0:>10}".format("hi")
' hi'
#치환되는 문자열을 오른쪽으로 정렬(문자열 총 자릿수 10)
- 가운데 정렬
>>> "{0:^10}".format("hi")
' hi '
#치환되는 문자열을 가운데 정렬(문자열 총 자릿수 10)
- 공백 채우기
======정렬시 공백 대신 지정한 문자로 채워 넣기; 채워 넣을 문자는 정렬문자(<, >, ^) 바로 앞에 넣어야 함=====
>>> "{0:=^10}".format("hi")
'====hi====' #가운데 정렬 & 빈 공간을 =로 채움
>>> "{0:!<10}".format("hi")
'hi!!!!!!!!' #왼쪽 정렬 & 빈 공간을 !로 채움
- 소수점 표현
>>> y = 3.42134234
>>> "{0:0.4f}".format(y)
'3.4213'
>>> "{0:10.4f}".format(y)
' 3.4213'
- {, } 문자 그대로 표현하기
>>> "{{ and }}".format()
'{ and }'
#format 함수를 사용해 문자열을 포매팅할 경우, 중괄호 문자({})를 포매팅 문자가 아닌 문자 그대로 사용하고 싶을 때; {{}} 처럼 2개 연속해서 사용
4) f 문자열 포매팅
문자열 앞에 f 접두사를 붙이면 f 문자열 포매팅 기능을 사용할 수 있음
- f 문자열 포매팅
=====name, age 같은 변숫값을 생성한 후 그 값을 참조할 수 있음=====
>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
=====f 문자열 포매팅은 표현식(중괄호 안의 변수를 계산식과 함께 사용하는 것)을 지원=====
>>> age = 30
>>> f'나는 내년이면{age + 1}살이 된다.'
'나는 내년이면 31살이 된다.'
=====f 문자열 포매팅은 딕셔너리(Key · Value를 한 쌍으로 가지는 자료형)를 지원=====
>>> d = {'name':'홍길동', 'age':30}
>>> f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'
'나의 이름은 홍길동입니다. 나이는 30입니다.'
- f 문자열 정렬
=====왼쪽 정렬=====
>>> f'{"hi":<10}'
'hi '
=====오른쪽 정렬=====
>>> f'{"hi":>10}'
' hi'
=====가운데 정렬=====
>>> f'{"hi":^10}'
' hi '
- f 문자열 공백 채우기
=====가운데 정렬 & '='로 공백 채우기=====
>>> f'{"hi":=^10}'
'=====hi====='
=====왼쪽 정렬 & '!'로 공백 채우기=====
>>> f'{"hi":!<10}'
'hi!!!!!!!!'
- f 문자열 소수점 표현
>>> y = 3.42134234
>>> f'{y:0.4f}' #소수점 4자리까지만 표현
'3.4213'
>>> f'{y:10.4f}' #소수점 4자리까지만 표현 & 총 자릿수 '10'
' 3.4213'
- f 문자열에서 {, } 문자 그대로 표현하기
>>> f'{{ and }}' #f 문자열에서 {}를 문자 그대로 표시하려면 2개를 동시에 사용
'{ and }'
출처 : ⎡Do it! 점프 투 파이썬 (박응용)⎦
'Python > 02. 파이썬의 기초, 자료형' 카테고리의 다른 글
02-3 리스트 자료형 (0) | 2024.06.25 |
---|---|
02-2-4 문자열 관련 함수들 (0) | 2024.06.24 |
02-2-2 연산 · 인덱싱 · 슬라이싱 (0) | 2024.06.24 |
02-2-1 문자열 만들기 (0) | 2024.06.24 |
02-2 문자열 자료형 (0) | 2024.06.24 |