본문 바로가기
Programming/Python

파이썬 코딩 따라하기(기본) - 문자열포맷

by Deongeun 2020. 11. 16.

 

< 문자열 포맷팅 (Formatting) 하기 >

포맷팅(Formatting)이란?

: 문자열 안에 특정위치에 특정값을 삽입하는것.


방법 A.  바로 대입하기

A-1. 정수 대입 %d

문자열에서 숫자를 넣고싶은 자리에 %d 를 넣어주고 삽입할 정수를 뒤에 % 다음으로 써넣는다.

 

 

 

A-2. 문자열 대입 %s

위와 마찬가지로 문자열을 넣고 싶은 자리에 %s를 넣어주고 삽입할 문자열을 뒤에 % 다음으로 써넣는다.

 

* 여기서, %s는 자동으로 % 뒤에 있는 값을 문자열로 바꿔서 어떤 형태든 변환해 넣을 수 있다.

(원래 180을 사용하려면 %d를 사용해야한다.)

 

 

 

A-3. %c (문자 1개 대입)

: character라는 의미로 문자 1개를 대입할 때 사용된다.

* 다양한 문자열 포맷코드

%c 문자1개(character)
%d 정수(Integer)
%f 부동소수(floating-point)
%o 8진수
%x 16진수
%% Literal % (문자 % 자체)

 

 

* 문자열포매팅과 함께 '%'를 사용하고 싶을때

 

 

* 여러개의 값을 포매팅할때

: (   ) 괄호 안에 값을 콤마(,)로 구분하여 여러개의 값을 넣어 줄 수있다. 


방법B.  숫자를 활용한 포맷코드 사용

B-1. 정렬과 공백 %10s

: 총 길이가 10개인 문자열 공간에서 대입되는 값을 오른쪽으로 정렬하고 그 앞에 공간은 공백으로 남겨둔다.  반대쪽으로 왼쪽정렬을 하려면 %-10s를 해주면 된다.

 

 

 

B-2. 소수점 나타내기

: 소수점 아래 몇번째까지 나타내고싶은지 정해줄 수 있다. 

  '.'는 소수점 포인트를 뜻하고 그 뒤에 숫자가 소수점 뒤에 나올 숫자의 개수를 의미한다.

  / 또한,  '.'앞에 숫자를 붙여주면 문자열의 자릿수도 지정할 수 있다.

 


방법C.  format 함수를 사용한 포매팅

 

C-1. 바로 대입하기

: format 함수를 이용할 때는 앞에 값을 넣어줄 위치에 { }을 써준다.

 

  - 2개 이상의 값을 넣을 경우 , {0}, {1}과 같은 인덱스가 format 함수의 입력값으로 순서에 맞게 바뀐다.

  즉 위의 예시처럼, {0}은 format함수 첫번째 입력값 "국어"가 되고, {1}은 format함수 두번째 입력값 "영어"가 된다.

  따라서 값을 넣을 때 인덱스 값에 따라 입력값의 순서도 바뀌게 된다.

 

 

 

C-2. name = value 지정하여 대입하기

: tall = 180, study = "국어" 라는 각각의 이름과 값을 지정해주고, { } 자리에 이름을 넣으면 그에 해당하는 값을 대입할 수 있다.

 

 

 

C-3. 인덱스와 이름을 혼용해서 넣기

: 방법A와 마찬가지로 인덱스를 이용해서 0번째인 180을 대입하고, name = value 형태로의 대입을

  혼용하는 것도 가능하다.

 

 

 

C-4. 정렬과 공백 

- 왼쪽 정렬 :<- 오른쪽 정렬 :>- 가운데 정렬 :^

: 총 자릿수가 10인 문자열 공간에서 해당 값의 문자열을 정렬하고 나머지 공간은 공백으로 남겨둔다.

 

 

 

* 공백채우기

: 정렬을 할때 공백대신에 지정한 값으로 문자를 채울 수 있다.  채워 넣을 문자 값은 정렬문자 <,>,^ 바로 앞에 넣어야 한다.

- 첫번째 예시는 "^"가운데 정렬하여, "="문자로 공백을 채웠다.

- 두번째 예시는 "<"왼쪽 정렬하여, "!"문자로 공백을 채웠다.

 

 

 

C-5. 소수점 표현하기

: 방법A와 같이 소수점 뒷자리 수를 지정하여 어디까지 표현할 것인지 정할 수 있다.

또한, '.' 앞에 숫자를 지정하여 총 자릿수를 설정할 수 있다.

 

 

 

* { } 문자 표현하기

: format함수를 사용하는데, { }와 같은 중괄호를 포매팅 문자가 아닌 문자 그대로 사용하고 싶을때

 {{ }}처럼 2개를 연속해서 사용하면 된다.


방법D.  f 문자열 포매팅

* 파이썬 3.6버전 이상부터 사용가능

- tall, study와 같이 변수 값을 만들어서 그 값을 참조할 수 있다.

 

 

 

D-1. f 문자열 포매팅의 표현식 지원

: f 문자열 포매팅은 표현식을 지원해서 다음과 같이 +,- 같은 수식을 함께 사용할 수 있다.

 

 

D-2. 딕셔너리 사용하기

 

 

D-3. 정렬과 공백

 

- 첫번째 예시는 "^"가운데 정렬하여, "="문자로 공백을 채웠다.

- 두번째 예시는 "<"왼쪽 정렬하여, "!"문자로 공백을 채웠다.

 

 

 

D-4. 소수점 표현하기

- 첫번째 예시는 소수점 아래 넷째자리까지 표현

- 두번째 예시는 자릿수가 10자리인 상태에서 소수점 아래 넷째자리까지 표현

 

 

 

* { } 문자 표현하기

: f 문자열 포매팅을 사용하는데, { }와 같은 중괄호를 포매팅 문자가 아닌 문자 그대로 사용하고 싶을때

 {{ }}처럼 2개를 연속해서 사용하면 된다.


<입출력 포맷 연습하기>

# 빈자리는 빈공간으로, 오른쪽 정렬, 총 10자리 공간을 확보
print("{0: >10}".format(1000))
# 결과:       1000
# 양수일땐 +, 음수일땐 -, 총 10자리 공간을 확보
print("{0:>+10}".format(1000))
print("{0:>+10}".format(1000))
# 결과:      +1000
#           -1000
# 왼쪽정렬, 빈칸을 *로 채우기, 총 5자리 공간을 확보
print("{0:*<5}".format(10))
# 결과: 10***
# 3자리마다 콤마찍기
print("{0:,}".format(10000000))
# 결과: 10,000,000
# 3자리마다 콤마를 찍고, +-부호 붙이기
print("{0:+,}".format(10000000))
print("{0:+,}".format(-10000000))
# 결과: +10,000,000
#      -10,000,000
# 3자리마다 콤마를 찍고, +-부호도 붙이고, 오른쪽 정렬, 빈자리는 *로 채우기, 총 10자리 공간을 확보
print("{0:*>+10,}".format(10000))
print("{0:*>+10,}".format(10000))
# 결과: ***+10,000
#      ***-10,000
# 8나누기 7, 소수점 출력
print("{0:f}".format(8/7))
# 결과: 1.142857
# 소수점 특정 자리수까지만 표시 (소수점 3째자리에서 반올림)
print("{0:0.2f}".format(8/7))
print("{0:.2f}".format(8/7))
# 결과: 1.14
#      1.14