본문 바로가기
방구석코딩/파이썬 기초문법

[파이썬 기초] 문자열 포맷

by 석세상 2022. 5. 4.
반응형

계속 동일한 형태의 형식의 결과를 출력할 때 유용하게 사용된다. 결과를 출력하는 형식을 지정해준다고 생각하면 된다.

입력하려는 값의 형태에 맞는 적당한 포맷 코드를 입력해주어야 하며, 아래 표에서 굵은 글씨인 경우의 포맷을 주로 사용한다.

 

1. 문자열 포맷 코드 형식

포맷 코드 설명
%s 문자열(String)
%c 문자 1개(Character)
%d 정수(Integer)
%f 부동소수(floating-point)
%o 8진수
%x 16진수

다음 포맷을 사용하는 하는 방법은 다음과 같다. 아래 입력값과 출력 값을 보자.

 

2. 문법 및 활용방법

2개 이상의 값을 입력할 때에는 아래와 같이 사용하면 된다. 문법은 "" 사이에 출력할 문자를 입력하고 변수를 입력하는 부분은 위의 포맷 코드로 표시한다. 따옴표 안의 굵은 색으로 표시한 %d, %s 부분에 %() 안의 변수 값이 들어가게 된다. 여기서 변수는 %d에는 num이 들어가는데 위에서 num = 10이라고 지정하였으므로 10이 들어가고, %s에는 강아지가 들어가게 되는 것이다. 따라서 결과는 아래와 같이 출력된다. 또 유의해야 할 점은 num에는 10이라는 정수가 입력되어 있어 정수 포맷인 %d를 입력하고, animal 부분에는 문자열을 나타낸 %s를 입력한다.

[입력값]
num = 10
animal = "강아지"
"나는 %d살이다. 그리고 %s를 키운다." %(num, animal)

[출력결과]
나는 10살이다. 그리고 강아지를 키운다.

 

3. 왼쪽/오른쪽 정렬

출력하려는 문자열의 길이가 다른 경우 제대로 정렬되어 있지 않으면 보기 싫은 경우가 있다. 이런 경우 정렬을 통해 해결할 수 있다. 1번 예제를 보면 오른쪽 정렬이라고 보면 된다. 입력값에 보면 %10s로 되어 있는데, 여기서 s는 앞에서 본 것과 마찬가지로 문자열을 의미하고, 10은 전체 자릿수를 의미한다. 그래서 출력하려는 문자열을 보면 아까 얘기했듯 오른쪽 정렬이기 때문에 먼저 공백이 8자리가 생기고, 이후에 '안녕'이라는 문자열이 출력된다. 반대로 2번 예제를 보면 숫자 앞에 '-'를 쓰게 되면 왼쪽 정렬이 되는 것이다. 따라서 '안녕'을 출력하고 뒤에 공백이 8자리를 생기는 것을 볼 수 있다. 참고로 전체 자릿수보다 입력하려는 값이 큰 경우는 에러가 발생하거나 하지 않고 무시하고 출력된다.

(1번 예제) 오른쪽 정렬
[입력값]
"%10s" % "안녕"

[출력결과]
'        안녕'


(2번 예제) 왼쪽 정렬
[입력값]
"%-10s" % "안녕"

[출력결과]
'안녕        '

 

4. 소수점 표현

소수점을 표현하기 위해서는 문자열 포맷 코드에서 부동 소수인 %f를 사용하면 된다. 아래 보면 소수점 표현은 '0.'을 쓰고 그 뒷부분에 표현하려는 소수점 자릿수를 쓰면 된다. 소수점 뒤 4자리만 쓰려면 '%0.4f'로 하면 된다.

[입력값]
"%0.4f" % 3.123456789

[출력결과]
3.1235

여기서 정렬까지 결합해서 활용해보자면 "%10.4f" % 3.123456789 로 쓰면, 총 10자리인데 오른쪽 정렬로, 그중 소수점은 4자리까지 표현하라는 것이다. 결과는 '    3.1235'로 나타난다. 여기서 주의해야 할 점은 소수점을 표현하는 '.'까지 전체 자리로 표현하는 것이다. 그래서 공백은 4자리만 나타난다.

 

5. 또 다른 포매팅 방법

위의 포매팅 방법은 기초적인 방법으로 순서대로 입력된다. 다음을 내가 원하는 순서에 입력값을 넣을 수 있기 때문에 실제로 사용하는 경우가 훨씬 많다.

(1번 예제) {0}은 format()안에 있는 첫번째 값을, {1}은 두번째 값을 출력한다
[입력값]

"나는 {0}살이다. 그리고 {1}를 키운다".format(10, "강아지")

[출력결과]
나는 10살이다. 그리고 강아지를 키운다.

(2번 예제) 1번 예제와는 반대로 {1}을 앞에 써서 두번째에 입력값인 강아지가 먼저 출력되는 것을 볼 수 있다.
[입력값]
"나는 {1}살이다. 그리고 {0}를 키운다".format(10, "강아지")

[출력결과]
나는 강아지살이다. 그리고 10를 키운다.

(3번 예제) {0}을 두번 적용했기 때문에 첫번째 있는 10만 출력되는 것을 볼 수 있다.
[입력값]
"나는 {0}살이다. 그리고 {0}를 키운다".format(10, "강아지")

[출력결과]
나는 10살이다. 그리고 10를 키운다.


(4번 예제) 아래는 변수명을 입력해서 변수명에 해당하는 값을 출력해준다.
[입력값]
"나는 {num}살이다. 그리고 {animal}를 키운다." %(num = 10, animal = "강아지")

[출력결과]
나는 10살이다. 그리고 강아지를 키운다.

 

포맷이라는 게 어떻게 보면 크게 중요하지 않을 수 있다. 결국은 연산, 계산한 결과값이 달라지는 것은 아니나, 마지막 결과를 보여줄 때 눈에 보여주는 것이기 때문에 보는 사람이 잘 이해할 수 있게 보여주는 것이라고 생각하면 중요할 수 있다. 결과가 아무리 정확하게 나오더라도 사람이 보기 쉽지 않거나 보고 싶지 않게 출력된다면 사용하지 않기 때문이다.

728x90
반응형

댓글