다운로드
작성자: admin 작성일시: 2017-05-11 16:28:11 조회수: 2446 다운로드: 223
카테고리: Python 태그목록:

파이썬의 문자열 형식화

파이썬에서는 복잡한 출력을 위한 문자열 형식화(string formatting)라는 것을 지원한다. 문자열을 형식화 하는 방법에는 % 기호를 사용한 방식과 format 메서드를 사용한 방식이 있다.

% 기호를 사용한 문자열 형식화

문자열 뒤에 % 기호를 붙이고 그 뒤에 다른 값을 붙이면 뒤에 붙은 값이 문자열 안으로 들어간다.

"문자열" % 값

이 때 문자열의 어느 위치에 들어가는지를 표시하기 위해 문자열 안에 % 기호를 시작하는 형식 표시 문자열(format specification string)이라는 것을 붙인다. 대표적인 형식 표시 문자열은 다음과 같다.

형식 표시 문자열 의미
%s 문자열
%d 정수
%f 부동소수점 실수

표 3.2.1 : 대표적인 형식 표시 문자열

다음은 % 기호를 사용한 문자열 형식의 예이다.

In [1]:
"My name is %s" % "Tom"
Out:
'My name is Tom'
In [2]:
"I am %d years old" % 12
Out:
'I am 12 years old'
In [3]:
"%f is the value of pi" % 3.141592
Out:
'3.141592 is the value of pi'

만약 여러개의 값을 문자열 안에 넣어야 한다면 % 기호 뒤에 있는 값을 소괄호로 감싸야 한다.

In [4]:
"%d times %d is %d" % (2, 3, 6)
Out:
'2 times 3 is 6'
In [5]:
"%s's score is %d" % ("Jane", 100)
Out:
"Jane's score is 100"

연습 문제 3.2.7

  1. nameage라는 변수에 각각 이름과 나이를 넣고 다음과 같이 출력하는 코드를 만들어라

    Tom is 13 years old
  2. 나눗셈을 할 두 숫자를 각각 a, b 라는 변수에 넣고 다음과 같이 나눗셈 식과 결과를 출력하는 코드를 만들어라.

    10 / 3 = 3.333

고급 형식 표시 문자열

형식 표시 문자열은 여러가지 숫자 인수를 가질 수도 있다.

고급 형식 표시 문자열 의미
%20s 전체 20칸을 차지하는 문자열(공백을 앞에 붙인다.)
%-10d 전체 10칸을 차지하는 숫자(공백을 뒤에 붙인다.)
%.5f 부동소수점의 소수점 아래 5자리까지 표시

표 3.2.2 : 고급 형식 표시 문자열의 예

In [6]:
"[%20s]" % "*"
Out:
'[                   *]'
In [7]:
"[%-20s]" % "*"
Out:
'[*                   ]'
In [8]:
"[%20d]" % 88
Out:
'[                  88]'
In [9]:
"[%-20d]" % 88
Out:
'[88                  ]'
In [10]:
x = 1 / 3.0
In [11]:
"%.5f" % x
Out:
'0.33333'
In [12]:
"[%-20.6f]" % x
Out:
'[0.333333            ]'

format 메서드를 사용한 문자열 형식화

format 메서드를 사용하여 문자열을 형식화할 수도 있다. 이 때는 % 기호로 시작하는 형식 표시 문자열 대신 {} 기호를 사용한다.

In [13]:
"My name is {}".format("Tom")
Out:
'My name is Tom'
In [14]:
"{}'s score is {}".format("Jane", 100)
Out:
"Jane's score is 100"

{}안에 값의 순서를 지정하여 같은 값을 반복하거나 순서를 바꾸어 넣을 수도 있다.

In [15]:
"{1}'s score is {0}, {0}, {0}, {0}, {0}, {0}, {0}".format(100, "Jane")
Out:
"Jane's score is 100, 100, 100, 100, 100, 100, 100"

공백의 크기를 지정하거나 부동소수점의 소수점 아래 숫자를 지정할 때는 다음과 같다.

In [16]:
"[{:20}]".format("*")
Out:
'[*                   ]'
In [17]:
"[{:>20}]".format("*")
Out:
'[                   *]'
In [18]:
"[{:<20.5f}]".format(x)
Out:
'[0.33333             ]'

연습 문제 3.2.8

a, b 두 개의 변수에 숫자를 넣고 다음과 같이 세로셈으로 곱셈 결과를 출력하는 코드를 만들어라

       3
x     12
--------
      36

참고 문헌

파이썬 문자열 형식화에 대한 보다 자세한 내용은 다음 웹사이트를 참조한다.

질문/덧글

아직 질문이나 덧글이 없습니다. 첫번째 글을 남겨주세요!