본문 바로가기
  • Top Genius in the world
알고리듬

[알고리듬] #28 스트링 포맷

by Mr.Algo 2024. 3. 30.
728x90
반응형

파이썬 실습창을 열 수 있습니다.실습창 열기

 

힘이 든 만큼 넓은 세상을 볼 수 있습니다.

 

 

1. 스트링 포맷

스트링 포맷(str format )은 보기 좋은 출력을 위하여 사용하는 출력 방법입니다.

필요에 따라 선택하여 사용할 수 있습니다.

권장 방식은 f-포맷입니다. 파이썬 최신 버전에서 사용할 수 있습니다.

다음 표의 '예'를 실습하세요.

번호 포맷 이름 예와 설명
1 기본-포맷 w='pi=3.14 그래서 3월 14일이 파이 데이'
print(w)

기본적으로 사용하는 방법입니다.
<출력>
pi=3.14 그래서 3월 14일이 파이 데이
2 %-포맷 name, value='pi', 3.14159
m, d=3, 14
w1='%s=%0.2f 그래서 %d월 %d일이 파이데이'  %(name,value,m,d)
print(w1)

기본-포맷은 실행 중에 내용을 바꾸기 어렵습니다.
그래서 실행 중에 내용을 바꾸기 쉽도록 개반 된 방법이 %-포맷입니다.
%-포맷은 오른쪽의 %다음에 있는 변수를  왼쪽의 %자리에 순서대로 대응 시킵니다.
단, 문자(str)는 %s, 실수(float)는 %f, 정수(int)는 %d 를 사용합니다. 
%다음에 숫자를 쓸 수 있습니다.
%5s는 5칸에 문자를 쓰고, %0.2f는 소수이하 2자리, %3d는 정수 3자리 등이 예입니다.

<위 프로그램의 출력은 기본-포맷과 같습니다>
pi=3.14 그래서 3월 14일이 파이 데이

또한,  I'm sorry. 와 같이 따옴표 등을 출력할 수 있도록 \', \" , \n(줄바꿈), \t(띄어쓰기)도 생각해 내었습니다. 위의 w1을 바꾸어 실행했습니다.
w1='%s=%0.2f \n그래서 %d월 %d일이 \'파이데이\'' %(name,value,m,d)

<실행 결과입니다>
pi=3.14
그래서 3월 14일이 '파이 데이'

조금의 문제도 있습니다. \를 출력하려면 \\와 같이 2번 쓰야합니다.
\(백슬래쉬)와 함께 사용하는 것을  탈출 코드(escape code)라 합니다. <아래의 표 참고>

3 고급-포맷 w1 = '{}={:0.2f} 그래서 {}월 {}일이 파이데이'.format(name,value,m,d)
위 프로그램의 w1을 바꾸었습니다. 출력은 같습니다.
<출력>
pi=3.14 그래서 3월 14일이 파이 데이

% 대신에 {}를 사용합니다. 
많은 좋은 점 중의 한 가지는  정렬(justify)입니다.

a='{0:^20}'.format('top')
print(a)  # 20칸을 준비하여 가운데 top를 출력합니다. 앞의 0은 format에 있는 변수의 인덱스입니다.   

{을 출력하려면 {{와 같이 2번 써야합니다.             

4 f-포맷 format()의 괄호속에 있던 변수를 {}속에 바로 쓰면 알기 쉽습니다.

name, value='pi', 3.14159
m, d=3, 14
w=f'{name:>3s}={value:0.2f} \n그래서 {m}월 {d}일이 \'파이 데이\''
print(w)

#  따옴표 앞에 f 를 붙입니다.
# 정렬(justify) <(left), ^(mid), >(right) 사용합니다.
# {name:>3s}는 name을 3칸을 준비하여 오른쪽 정렬로 출력합니다.
5 r-포맷 탈출 문자(escape code)의 기능을 사용하지 않을 때 쓰는 포맷입니다.

a='I\'m \n sorry.'
print(a)
b=r'I\'m \n sorry.'
print(b)

<a출력>
I'm
 sorry.
<b 출력>
I\'m \n sorry.

# 따옴표 왼쪽에 r을 붙입니다.

 

data type code

많이 사용되는 포맷 코드는 d(정수), f(실수), s(문자열)입니다.

번호 타입 코드 대상
1 d 10진수 정수(int)
2 f, F 실수(float):십진 소수점형 출력
3 s 문자열(str)
4 b
o
x, X
2진수 정수
8진수 정수
16진수 정수
5 e, E 실수(float):지수형 출력

 

출력하려는 데이터의 종류에 따라 대응되는 코드를 사용합니다.

%d(정수), %f(실수), %s(문자) 등이 대표적입니다.

 

a='pi=%8.3f  ' %3.14159
print(a) 

[출력] pi=   3.142

8.3f 는 전체 8칸을 준비하여 소수 3자리까지 출력합니다.

점도 한 칸을 차지하며, 정수부는 그대로 출력합니다.

앞쪽의 남는 칸은 공백으로 둡니다. 칸이 부족하면 데이터에 맞춰서 칸을 늘립니다.

 

 

  표준문자 탈출 코드(escape sequence code)

’\(back slash)‘와 약속된 문자를 함께 쓰면 문자열 속에서 특별한 기능을 한다.

번호 문자 설명 sample sample output
1 \ 줄 이음(concatenation) a='123' \
'45'
12345
‘\’는 단독으로 사용하지 못한다.
2 \\, \', \" \(backslash) a='123\\45' 123\45
3 \n
\t
줄 바꿈(linefeed)
칸 띄움(tab)
a='123\n4\t5'
print(a)
123
4       5
4   \ 기능 무시 a=r'123\n45' 123\n45 (r-format)

 

※  탈출 코드(eacape code)

따옴표로 둘러싼 문장안에 따옴표를 사용하는 등의 경우에 사용될 수 있습니다.

예를 들어, a=' I'm a CEO.' 의 경우 따옴표의 범위를 알 수 없어서 바르게 출력되지 않습니다. 이러한 경우에는 a='I\'m CEO'와 같이 '(아포스트러피) 왼쪽에 \(백슬래쉬)를 사용하여 바르게 출력 시킬 수 있습니다.

 

\'(작은 따옴표 출력), \"(큰 따옴표 출력), \\(백 슬래쉬 출력), \t(칸 띄우기), \n(줄 바꾸기) 등으로 사용합니다.

그러나 최근에는 a="I'm CEO" 등 안과 밖에 다른 따옴표를 사용하거나 f-foramtting을 사용하는 경우가 많습니다.

 

2. f-format 코드

f-format의 코드입니다.

실습하고, 이해하세요.

name, value='pi', 3.14159
m, d=3, 14
w=f'{name:>3s}={value:0.2f} \n그래서 {m}월 {d}일이 \'파이 데이\''
print(w)

 

 

출력 포맷을 개략적으로 알아 보았습니다.

자세한 사용 방법은 복잡하여 자세히 설명하지 않았습니다.

필요할 때에 메뉴얼을 참조하면 됩니다.

수고하셨습니다.

 

오늘 끝.

728x90
반응형