티스토리 뷰

IT/Python

[Python] 출력

Dragonz 2020. 8. 1. 19:50
반응형

 

 

포맷 문자열 리터럴 ('f' 나 'F' 를 앞에 붙인 문자열 리터럴) 을 사용하려면, 시작 인용 부호 또는 삼중 인용 부호 앞에 f 또는 F 를 붙여 문자열을 시작해야한다. 이 문자열 안에서 { 와 } 사이에 변수 또는 리터럴 값을 참조할 수 있는 파이썬 표현식을 사용한다.

>>> year = 2016
>>> event = 'Referendum'
>>> f'Result of the {year} {event}'
'Result of the 2016 Referendum'

 

포맷 문자열 리터럴의 사용

 

문자열의 str.format() 메소드를 이용하면 조금 더 다양한 표현이 가능하다. 변수가 될 위치를 표시하기 위해 { 와 } 를 사용하고, 자세한 포맷팅 디렉티브를 제공할 수 있지만, 포맷할 정보도 제공해야 한다.

>>> yse_votes = 42572654
>>> no_votes = 43132495
>>> percentage = yes_votes / (yes_votes + no_votes)
>>> # {:-9} --> 우측정렬이고 고정 9 자리로 표현
>>> # {:2.2%} --> 정수부분 2자리, 소수점부분 2자리료 표현
>>> '{:-9} YES votes  {:2.2%}'.format(yes_votes, percentage)
' 42572654 YES votes  49.67%'

 

str.format() 메소드

 

장식적인 출력이 필요하지 않고, 디버깅을 위해 일부 변수를 빠르게 표시하려면 repr() 또는 str() 함수를 사용하여 모든 값을 문자열로 변환할 수 있다.

>>> s = 'Hello, world.'
>>> str(s)
'Hello, world.'

>>> repr(s)
"'Hello, world.'"

>>> str(1/7)
'0.14285714285714285'

>>> x = 10 * 3.25
>>> y = 200 * 200
>>> s = 'The value of x is ' + repr(x) + ', and y is ' + repr(y) + '...'
>>> print(s)
The value of x is 32.5, and y is 40000...

>>> hello = 'hello, world\n'
>>> hellos = repr(hello)
>>> print(hellos)
'hello, world\n'

>>> hellos = str(hello)
>>> print(hellos)
hello, world

>>>                               

 

str() 과 repr() 의 차이

 

포맷 문자열 리터럴은 문자열에 f 또는 F 접두어를 붙이고 표현식을 {expression} 로 작성하여 문자열에 파이썬 표현식의 값을 삽입할 수 있게 한다. 선택적인 포맷 지정자가 표현식 뒤에 올 수 있다. 다음의 예는 원주율을 소수점 이하 세 자리로 반올림한다.

>>> import math
>>> print(f'The value of pi is approximately {math.pi:.3f}.')
The value of pi is approximately 3.142.

 

포맷 문자열 리터럴 - 원주율 표현

 

':' 뒤에 정수를 전달하면 해당 필드의 최소 문자 폭이 된다. 열을 맞출 때 편리하다.

>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
>>> for name, phone in table.items() :
...     print(f'{name:10} ==> {phone:10d}')
...
Sjoerd     ==>       4127
Jack       ==>       4098
Dcab       ==>       7678

 

문자열의 폭을 맞추기 위한 :n 사용

 

str.format() 메소드의 기본적인 사용법은 아래와 같다.

>>> print('We are the {} who say "{}!"'.format('knights', 'Ni'))
We are the knights who say "Ni!"

 

str.format() 메소드의 기본적인 사용법

 

중괄호와 그 안에 있는 문자들은 str.format() 메소드로 전달된 객체들로 치환된다. 중괄호 안의 숫자는 str.format() 메소드로 전달된 객체들의 위치를 가리키는데 사용될 수 있다.

>>> print('{0} and {1}'.format('spam', 'eggs'))
spam and eggs

>>> print('{1} and {0}'.format('spam', 'eggs'))
eggs and spam

 

str.format() 메소드의 활용

 

str.format() 메소드에 키워드 인자가 사용되면, 그 값들은 인자의 이름을 사용해서 지정할 수 있다.

>>> print('This {food} is {adjective}.'.format(
... food='spam', adjective='absolutely horrible'))
This spam is absolutely horrible.

 

str.format() 메소드의 활용

 

정수, 제곱, 세제곱 정수를 표현하는 예이다. 문자열 객체의 str.rjust() 메소드는 왼쪽에 스페이스를 채워서 주어진 폭으로 문자열을 우측정렬한다. 비슷한 메소드로 str.ljust(), str.center() 도 있다. 이 메소드들은 아무것도 출력하지 않고 새로운 문자열만 리턴한다. (입력 문자열이 너무 길면 변경없이 그냥 리턴함)

>>> for x in range(1, 11) :
...     print(repr(x).rjust(2), repr(x*x).rjust(3), end=' ')
...     print(repr(x*x*x).rjust(4))
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

 

수동 문자열 포매팅

 

str.zfill() 메소드는 숫자 문자열의 왼쪽에 0을 채운다.

>>> '12'.zfill(5)
'00012'

>>> '-3.14'.zfill(7)
'-003.14'

>>> '3.14159265359'.zfill(5)
'3.14159265359'

 

str.zfill() 메소드. 음수도 처리 가능하다.

 

 

END

반응형

'IT > Python' 카테고리의 다른 글

[Python] 예외 처리  (0) 2020.08.02
[Python] 파일 읽고 쓰기  (0) 2020.08.01
[Python] 모듈  (0) 2020.08.01
[Python] 루프 테크닉  (0) 2020.07.17
[Python] 딕셔너리  (0) 2020.07.16
댓글
공지사항