2021. 6. 21. 20:40ㆍPython
문자열 포매팅(String Formatting)
문자열 안의 특정한 값을 바꿔야 할 경우
이것을 가능하게 해주는 것이 문자열 포매팅 기법이다.
일상에서 쉽게 볼 수 있는데
"현재 온도는 18도입니다."
라는 메세지가 뜨고 2시간이 지나 온도가 변하니
"현재 온도는 20도입니다."
라는 메세지가 뜨는 경우.
[Web발신]
[OO회사] 안녕하세요, OOO님.
정성껏 작성해주신 입사지원서의 접수가 완료되었습니다.
… (중략)
기업이나 단체에서 수많은 인원에게 이름부분만
바꾸어 동일한 내용의 문자를 보낼 때 자주 보인다.
문자열 포맷 코드
%s | 문자열(String) |
%c | 문자 1개(Character) |
%d | 정수(integer) |
%f | 부동 소수(Floating-point) |
%o | 8진수 |
%x | 16진수 |
%% | Literal % (문자 '%' 자체) |
사실 %s 포맷 코드가 어떤 형태의 값이든
변환해 넣을 수 있기 때문에 만능이라
다 외울 필요는 없다고 하는데
그래도 혹시 모르니까 적어본다.
print format 사용
print("I eat %d apples." % 3)
>>> I eat 3 apples.
print("I eat %d %s." % (5, "apples"))
>>> I eat 5 apples.
%d라고 쓰인 자리에 문장 마지막에 적은
% 뒷 숫자. 즉 '3'을 넣어 완성시킨 문장을 내보낸다.
이와 같은 원리로 '문자'를 넣을 수도 있고,
2개 이상의 값을 넣을 수도 있다.
>>> "I eat %s apples." % "five"
'I eat five apples.'
>>> number = 3
>>> "I eat %d apples." % number
I eat 3 apples.'
>>> 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.'
포맷코드를 숫자와 함께 사용하면
정렬과 공백, 소수점 표현도 가능해진다.
>>> "%10s" % "hi"
' hi'
예시를 보면 " " 안의 문자를 나타내되, 임의 칸(%s)에는 'hi'를 대입하면 된다.
다만 '%s'라는 포맷 코드 사이에 '10'이란 숫자를 있기 때문에
전체 길이가 10개인 문자열 공간에서 오른쪽으로 정렬해서 내보내란 것이다.
hi는 2글자인데 10개로 나오라고 했으니 앞에 공백 8칸+hi 가 나오는 것이다.
>>> "%-10sjane" % "hi"
'hi jane'
숫자는 음수도 가능하다.
양수가 오른쪽 정렬이었으니
음수는 왼쪽 정렬이다.
>>> "%0.4f" % 3.42134234
'3.4213'
%f는 소수 포맷 코드, .은 소수점 포인트,
.뒤에 4는 소수 넷째 자리 까지라는 의미다.
>>> "%10.4f" % 3.22134234
' 3.4213'
위와 같은 의미지만 0.4가 아닌 10.4가
왔으므로 전체 문자열 길이는 10이며
오른쪽 정렬, 소수점 넷째 자리까지
나타내라는 의미이다.
str.format 함수 사용
print("{}는 {}개 있다.".format("사과", 4))
>>> 사과는 4개 있다.
위에서는 % 기호를 사용했다면 이번엔
{중괄호}를 대신 넣고 문자열 끝에 .format()을
붙이는 것이 특징이다.
>>> "I eat {0} apples".format(3)
'I eat 3 apples'
>>> "I eat {0} apples".format("five")
'I eat five apples'
>>> number = 3
>>> "I eat {0} apples".format(number)
'I eat 3 apples'
.format() 이라는 format 함수를 이용하는 방법이다.
문자열 안에 { }를 포함시키고 끝에 .format( )을 달면
문장 안 { } 자리에 ( )안에 적어 넣은 정보가 들어가
문장을 완성시킨다.
>>> 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.'
>>> "I ate {number} apples. so I was sick for {day} days.".format(number=10, day=3)
'I ate 10 apples. so I was sick for 3 days.'
>>"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.'
숫자, 글자, 2개 이상의 값,
숫자와 문자, 인덱스 혼용 모두 가능하다.

'정렬'도 가능하다.
왼쪽 정렬은 :<
오른쪽 정렬은 :>
가운데 정렬은 :^
왼쪽 정렬
>>> "{0:<10}".format("hi")
'hi '
오른쪽 정렬
>>> "{0:>10}".format("hi")
' hi'
가운데 정렬
>>> "{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'
f-string (**)
formatted string의 줄임말이다.
f-string은 변수가 미리 지정되어 있어야 한다.
apple = "사과", count = 4
print(f"{apple}는 {count}개 있다.")
직관적인 변수로 코드에 대한 캐치가
빠르기 때문에 익숙해지기만 하면 편해서
f-string에 익숙해 지기를 추천한다.
배웠던 내용들을 전부 mix 해보고 싶었는데
아직 내 실력으로는 소수점을 자른 키를
문장 속에 넣는 것은 무리인 것 같다.
더 배우다 보면 알게 되겠지( ͡° ͜ʖ ͡°)
'Python' 카테고리의 다른 글
[Python 독학] 파이썬 자료형 - 튜플 자료형 (0) | 2021.06.22 |
---|---|
[Python 독학] 파이썬 자료형 - 리스트 자료형 (0) | 2021.06.22 |
[Python 독학] 파이썬 자료형 - 문자열 자료형 ② (0) | 2021.06.21 |
[Python 독학] 파이썬 자료형 - 숫자형, 문자열 자료형 ① (0) | 2021.06.21 |
[Python 독학] Intro (0) | 2021.06.21 |