작업을 하다 보면 특정 변수에
여러 가지 값을 넣어야 할 때가 있습니다.
예를 들면, 10명의 학생들의 학점을 발표할 때
이름이 다르기 때문에 출력을 하려면
문자열을 10번 써야 합니다.
이런 상황에서 유용한 것이
바로 포맷팅(Formatting)입니다.
■ 문자열 포맷팅(Formatting)
□ 문자 치환하기 / %d %s / { } .format
문자열 안에 어떤 값을 삽입하는 방법
포맷팅의 방법은 2가지입니다.
1. 포맷 코드 사용 (%d, %s 등)
2. 포맷 함수 사용 ( { } .format )
포맷 코드 사용
자료 형태에 따라서 사용하는 포맷코드가 다릅니다.
1. %s : 문자열 ◀ 많이 사용
2. %d : 정수 ◀ 많이 사용
3. %c : 문자 1개
4. %f : 부동 소수
6. %o : 8진수
7. %x : 16진수
6. %% : '%' 자체를 출력
"문자열 %s 문자열" %출력값
"문자열 %s %d %s " %(1번째, 2번째, 3번째)
문자열 작성 후 치환하고 싶은 값에
자료 형태에 맞게 %s 또는 %d 표시합니다.
그리고 문자열 다음에 % 출력값을 작성합니다.
print("김파이의 점수는 %d 점 입니다." % 85)
print("%s의 점수는 70 점 입니다." % "이포맷")
##### result #####
김파이의 점수는 85 점 입니다.
이포맷의 점수는 70 점 입니다.
출력값을 변수로 넣을 수도 있습니다.
이렇게 하면 변숫값만 변경하면 되니까 편하겠지요~
그리고 한 개의 문자열에 여러 개의 값을
포맷팅 할 수 있습니다.
아래 예문처럼 2개 이상의 값을 넣으려면
출력값을 넣는 % 다음에 괄호( ) 안에 콤마(,)로
구분하여 각 각의 값을 입력합니다.
점수 = 95
이름 = "이포맷"
print("김파이의 점수는 %d 점 입니다." % 점수)
print("%s의 점수는 70 점 입니다." % 이름)
print("%s의 점수는 %d 점 입니다." % (이름,점수))
print("%s의 점수는 %d 점 입니다. %s" % (이름,점수,"합격!"))
##### result #####
김파이의 점수는 95 점 입니다.
이포맷의 점수는 70 점 입니다.
이포맷의 점수는 95 점 입니다.
이포맷의 점수는 95 점 입니다. 합격!
포맷 코드는 자료 형태에 따라서
%s, %d, %f 등으로 써야 한다고 말씀드렸는데요.
Tip! 문자열에 사용되는 %s 는
어떤 자료 형태로도 치환이 가능합니다.
모든자료를 문자열로 바꿔서 출력하기 때문입니다.
(자료형태를 유지할 필요가 없다면 %s만 사용해도 됩니다.)
점수 = 95
이름 = "이포맷"
print("%s의 점수는 %s 점 입니다. %s" % (이름,점수,"합격!"))
##### result #####
이포맷의 점수는 95 점 입니다. 합격!
그리고 만약
"김파이는 반에서 상위 20%에 속합니다."
라는 퍼센트(%)가 포함된 문자열을 출력하려면 어떻게 할까요?
아래처럼 %% 코드를 사용하면 '%' 값만 그대로 한 번 더 출력됩니다.
퍼센트 = 20
이름 = "김파이"
print("%s는 반에서 상위 %s에 속합니다." %(이름, 퍼센트))
print("%s는 반에서 상위 %s%%에 속합니다." %(이름, 퍼센트))
##### result #####
김파이는 반에서 상위 20에 속합니다.
김파이는 반에서 상위 20%에 속합니다.
포맷팅 하려는 값 앞에 숫자를 넣으면
숫자만큼 공백을 만들게 됩니다.
치환 값 왼쪽에 공백을 10칸 만큼 넣으려면
%10s
치환 값 오른쪽에 공백을 10칸 만큼 넣으려면
%-10s
소수점 3자리까지 표현하려면
%0.3f 로 작성하면 됩니다.
공백과 소수점을 같이 표현 할 수도 있습니다.
print("%10s 왼쪽에 공백10개" %"안녕!")
print("%-10s 오른쪽에 공백10개" %"안녕!")
print("%0.3f 소수점 포현" % 3.141592) #소수점 인식
print("%0.3s 소수점 포현" % 3.141592) #문자열 인식
print("%10.3f 소수점 포현" % 3.141592)
##### result #####
안녕! 왼쪽에 공백10개
안녕! 오른쪽에 공백10개
3.142 소수점 포현
3.1 소수점 포현
3.142 소수점 포현
■ format 함수 사용
□ { } .format( )
{순서} 문자열 .format(출력값)
{순서1} {순서2} 문자열.format(출력값1,출력값2)
문자열 내에서 포맷팅 하려는 값을
{0} 부터 순서대로 입력합니다.
문자열 끝에 ' . format( ) ' 을 입력한 후
괄호 안에 순서대로 출력값을 넣습니다.
점수 = 95
이름 = "이포맷"
print("김파이의 점수는 {0} 점 입니다." .format(점수))
print("{0}의 점수는 70 점 입니다." .format("이포맷"))
print("{0}의 점수는 {1} 점 입니다." .format(이름, 점수))
print("{0}의 점수는 {1} 점 입니다.{2}" .format(이름, 점수, "합격!"))
##### result #####
김파이의 점수는 95 점 입니다.
이포맷의 점수는 70 점 입니다.
이포맷의 점수는 95 점 입니다.
이포맷의 점수는 95 점 입니다.합격!
순서가 너무 많아져서 헷갈린다면
format 함수 내에서 변수를 지정하여
값을 넣을 수도 있습니다.
헷갈릴 필요없이
가장 깔끔한 방법이라고 생각합니다~
점수=70
print("{name}의 점수는 {score} 점 입니다." .format(name="철수",score=점수))
##### result #####
철수의 점수는 70 점 입니다.
format( ) 함수를 이용하여 포맷팅 할때
치환할 값의 전체 자리수 또는
정렬 방식등을 추가할 수 있습니다.
점수 = 95
이름 = "이포맷"
#{인덱스:전체자리수}
print("김파이의 점수는 {0:10} 점 입니다." .format(점수)) #치환하는 값에 10칸 자리수가 생성
print("김파이의 점수는 {0:5} 점 입니다." .format(점수)) #치환하는 값에 5칸 자리수가 생성
#{인덱스:정렬방향 전체자리수}
print("김파이의 점수는 {0:<5} 점 입니다." .format(점수)) #5칸 자리수 주고 왼쪽 정렬
print("김파이의 점수는 {0:>5} 점 입니다." .format(점수)) #5칸 자리수 주고 오른쪽 정렬
#{인덱스:공백에문자넣기 정렬방향 전체자리수}
print("김파이의 점수는 {0:*>5} 점 입니다." .format(점수)) #5칸 자리수 주고 공백엔 *표시 오른쪽 정렬
##### result #####
김파이의 점수는 95 점 입니다.
김파이의 점수는 95 점 입니다.
김파이의 점수는 95 점 입니다.
김파이의 점수는 95 점 입니다.
김파이의 점수는 ***95 점 입니다.
포맷팅(format)은 파이썬 제어문에서
(if문, while문 등)많이 사용됩니다.
그래서 많은 예문을 연습해 두면 좋겠습니다.
'Python 기초 배우기 > 비전공자도 배우는 파이썬 기초' 카테고리의 다른 글
07. 파이썬 리스트(List) 자료형 (0) | 2021.01.12 |
---|---|
06. 파이썬 문자열 자료형 관련 함수 (0) | 2021.01.06 |
04. 파이썬 인덱싱(Indexing), 슬라이싱(Slicing) (0) | 2020.12.10 |
03. 파이썬 기초:자료형 (숫자형/문자열 자료형) (0) | 2020.12.08 |
02. 파이썬 입력하기! (변수/입력/출력) (0) | 2020.11.29 |