본문 바로가기
Python

[Python] 문자열 포맷팅

by 기리의 개발로그 2023. 12. 26.

파이썬 문자열 포맷팅

파이썬에서 문자열 포맷팅하는 방법으로는 %, format, f문자열 이 있다.

% 를 사용한 문자열 포맷팅


문자열 포맷팅이랑 문자열안에 특정한 값을 삽입하는 방법을 말한다.

  • 숫자 대입
    숫자를 대입하고 싶은 곳에 %d 를 입력한 후 삽입할 숫자는 문자열 가장 뒤에 % + 숫자 를 쓴다.
str = 'i am %d years old' % 29
print(str)
'i am 29 years old'

  • 문자 대입
    숫자와 마찬가지이며 문자의 경우 %s를 사용한다.
str = 'i am %s years old' % 'twenty-nine'
print(str)
'i am twenty-nine years old'

  • 변수 대입
    변수를 사용하여 대입하며, 변수 타입에 맞춰 문자열 포맷 코드를 작성해주면 된다.
number = 29
str = 'i am %d years old' % number
print(str)
'i am 29 years old'

  • 여러 개 대입
    문자열 안에 여러 개의 값을 삽입하고 싶은 경우, 각각의 변수를 % 뒤에 괄호를 하고 내부에서 콤마(,)로 구분한다.
number = 29
string = 'handsome'
str = 'i am %d years old and very %s' % (number, string)
print(str)
'i am 29 years old and very handsome'

코드 설명
%s 문자열
%c 문자 1개
%d 정수
%f 부동소수
%o 8진수
%x 16진수
%% % 문자

특이하게 %s 는 자동으로 % 뒤에 있는 값을 문자열로 바꾸기 때문에 어떤 형태의 값이든 변환해 넣을 수 있다.

str = 'i have %s handphone' % 1
print(str)

str = 'rate is %s' % 3.24
print(str)

str = 'Error is %d%%.' % 98
print(str)
'i have 1 handphone'
'rate is 3.24'
'Error is 98%.'

문자열 포맷팅 응용

  • 정렬과 공백
    문자열 포맷팅 사이의 숫자는 전체 길이를 의미하며 나머지 공간은 공백처리 한다.
  • 는 오른쪽 정렬, -는 왼쪽 정렬을 의미한다.
str = '%10s' % 'hi'    # 전체 길이가 10개인 공간에서 오른쪽 정렬 후 공백0
print(str)

str ='%-10s' % 'hi'   # 전체 길이가 10개인 공간에서 왼쪽 정렬 후 공백
print(str)
'        hi'
'hi        '

  • 소수점
    . 앞의 숫자는 전체 숫자의 개수를 의미하며 나머지 공간은 공백처리 한다.(0이면 공백 미존재)
    . 의 의미는 소수점 포인트를 말하며 그 뒤의 숫자는 소수점 뒤에 나올 숫자의 개수를 의미한다.
  • 는 오른쪽 정렬, -는 왼쪽 정렬을 의미한다.
str = '%0.4f' % 3.245546  
print(str)

str = '%10.4f' % 3.245546    # 전체 길이가 10개인 공간에서 소수점 4자리까지 오른쪽 정렬 후 공백
print(str)

str = '%-10.4f' % 3.245546   # 전체 길이가 10개인 공간에서 소수점 4자리까지 왼쪽 정렬 후 공백
print(str)
'3.2455'
'    3.2455'
'3.2455    '

format 함수를 사용한 포맷팅


숫자를 대입하고 싶은 곳에 {} 를 입력한 후 삽입할 숫자는 문자열 가장 뒤에 .format() 에 인자로 넣는다.

  • 숫자 대입
str = 'i am {0} years old'.format(29)
print(str)
'i am 29 years old'

  • 문자 대입
str = 'i am {0} years old'.format('twenty-nine') 
print(str)
'i am twenty-nine years old'

  • 변수 대입
number = 29
str = 'i am {0} years old'.format(number)        
print(str)
'i am 29 years old'

  • 여러 개 대입
    문자열 안에 여러 개의 값을 삽입하고 싶은 경우, 변수를 넣을 자리에 {0}, {1}, {2} .. 순서로 넣고 .format() 함수 인자를 콤마(,)로 구분한다.
number = 29
string = 'handsome'
str = 'i am {0} years old and very {1}'.format(number, string) 
print(str)
'i am 29 years old and very handsome'

숫자 대신 변수를 넣고 .format() 의 인자로 변수와 값은 함께 넣어도 된다.

str = 'i am {number} years old and very {string}'.format(number=29, string='handsome') 
print(str)
'i am 29 years old and very handsome'

  • 정렬과 공백
    기호(<, >, ^) 뒤에 있는 숫자는 전체 길이를 의미하면 나머지 공간은 공백처리 한다.
    : 와 기호(<, >, ^) 사이에 문자가 있다면 해당 문자로 공백을 채운다.
    > 는 왼쪽 정렬, ^ 는 가운데 정렬, < 는 오른쪽 정렬을 의미한다.
str = '{0:<10}'.format("hi")
print(str)

str = '{0:>10}'.format("hi")
print(str)

str = '{0:^10}'.format("hi")
print(str)

str = '{0:-^10}'.format("hi") 
print(str)

str = '{0:->10}'.format("hi") 
print(str)
'hi        '
'        hi'
'    hi    '
'----hi----'
'--------hi'

  • 소수점
    . 앞의 숫자는 전체 숫자의 개수를 의미하며 나머지 공간은 공백처리 한다.(0이면 공백 미존재)
    . 의 의미는 소수점 포인트를 말하며 그 뒤의 숫자는 소수점 뒤에 나올 숫자의 개수를 의미한다.
    > 는 왼쪽 정렬, ^ 는 가운데 정렬, < 는 오른쪽 정렬을 의미한다.
str = '{0:0.4f}'.format(3.2513587) 
print(str)

str = '{0:>10.4f}'.format(3.2513587) 
print(str)

str = '{0:<10.4f}'.format(3.2513587) 
print(str)

str = '{{ and }}'.format()
print(str)
'3.2514'
'    3.2514'
'3.2514    '
'{ and }'

f문자열 포매팅


문자열 앞에 f 를 사용하며 대괄호({}) 안에 변수를 넣어준다.
대괄호({}) 안에는 변수나 숫자, 문자열을 넣을 수 있다.

name = '양상길'
age = 29
str = f'나의 이름은 {name}이고 나이는 {age} 입니다.'
print(str)

age = 29
str = f'나는 내년에 {age+1}살이 된다'
print(str)
'나의 이름은 양상길이고 나이는 29 입니다.'
'나는 내년에 30살이 된다'

  • 정렬과 공백
    : 뒤에 있는 숫자는 전체 숫자의 개수를 의미하며 나머지 공간은 공백처리 한다.
    : 와 기호(<, >, ^) 사이에 문자가 있다면 해당 문자로 공백을 채운다.
    > 는 왼쪽 정렬, ^ 는 가운데 정렬, < 는 오른쪽 정렬을 의미한다.(생략 시 왼쪽 정렬)
name = '양상길'
str = f'{name:10}'
print(str)

str = f'{"hi":<10}'  
print(str)

str = f'{"hi":>10}'  
print(str)

str = f'{"hi":^10}'  
print(str)

str = f'{"hi":@<10}' 
print(str)
'양상길       '
'hi        '
'        hi'
'    hi    '
'hi@@@@@@@@'

  • 소수점
    . 앞의 숫자는 전체 숫자의 개수를 의미하며 나머지 공간은 공백처리 한다.(0이면 공백 미존재)
    . 의 의미는 소수점 포인트를 말하며 그 뒤의 숫자는 소수점 뒤에 나올 숫자의 개수를 의미한다.
    > 는 왼쪽 정렬, ^ 는 가운데 정렬, < 는 오른쪽 정렬을 의미한다.
y = 3.42134234
str =  f'{y:0.4f}'
print(str)

str = f'{3.4213585:10.4f}'
print(str)

str = f'{45.551:<9.2f}'
print(str)
'3.4213'
'    3.4214'
'45.55    '

{ } 를 표현하기 위해서는 다음과 같이 두개를 사용해야 한다.

str = f'{{  }}'
print(str)
'{  }'
반응형

'Python' 카테고리의 다른 글

[Python] 리스트  (31) 2023.12.28
[Python] 문자열 내장함수  (33) 2023.12.27
[Python] 문자열  (36) 2023.12.22
[Python] 연산자  (23) 2023.12.21
[Python] 변수 및 기본 자료형  (46) 2023.12.20

댓글