Python

[Python] 문자열 포매팅(string formatting)

주댕이 2024. 1. 11. 17:54

# 문자열 포매팅(string formatting)이란?

  • 문자열 안에 어떤 값을 삽입하는 방법

 

# 문자열 포맷 코드

# 숫자 바로 대입하기
"I eat %d apples." % 3  # 'I eat 3 apples.'

# 문자열 바로 대입하기
"I eat %s apples." % "five"

# 숫자 값을 나타내는 변수로 대입하기
number = 3
"I eat %d apples." % number  # 'I eat 3 apples.'

# 2개 이상의 값 넣지
number = 10
day = "three"
"I ate %d apples, so I was sick for %s days." % (number, day)
# 'I ate 10 apples, so I was sick for three days.'

# %s 포맷 코드에는 어떤 형태의 값이든 변환해 넣을 수 있다.
"I have %s apples" % 3  # 'I have 3 apples'
"rate is %s" % 3.234  # 'rate is 3.234'

# 포매팅 연산자 %d와 %를 같이 쓸 때는 %%를 쓴다.
"Error is %d%%." % 98  # 'Error is 98%.'

 

  • 문자열 포맷 코드의 종류
    • %s: 문자열(String)
    • %c: 문자 1개(character)
    • %d: 정수(Integer)
    • %f: 부동소수(floating-point)
    • %o: 8진수
    • %x: 16진수
    • %%: Literal %(문자 % 자체)

 

# 포맷 코드와 숫자 함께 사용하기

# 정렬과 공백
"%10s" % "hi"  # '        hi'
# %10s: 전체 길이가 10개인 문자열 공간에서 대입되는 값을 오른쪽으로 정렬하고 그 앞의 나머지는 공백으로 남겨 둔다.
"%-10sjane." % 'hi'  # 'hi        jane.'
# %-10s: hi를 왼쪽으로 정렬하고 나머지는 공백으로 채운다.

# 소수점 표현하기
"%0.4f" % 3.42134234  # '3.4213'
# %0.4f에서 ‘.’는 소수점 포인트, 그 뒤의 숫자 4는 소수점 뒤에 나올 숫자의 개수를 말한다.
# 소수점 포인트 앞의 숫자: 문자열의 전체 길이, %0.4f에서 사용한 숫자 0: 길이에 상관하지 않겠다는 의미

 

 

 

# format 함수를 사용한 포매팅

# 숫자 바로 대입하기
"I ate {0} apples".format(3)  # 'I ate 3 apples'

# 문자열 바로 대입하기
"I ate {0} apples".format("five")  # 'I ate five apples'

# 숫자 값을 가진 변수로 대입하기
number = 3
"I ate {0} apples".format(number)  # 'I ate 3 apples'

# 2개 이상의 값 넣기
number = 10
day = "three"
"I ate {0} apples, so I was sick for {1} days.".format(number, day)
# 'I ate 10 apples, so I was sick for three days.'
# 2개 이상의 값을 넣을 경우, 문자열의 {0}, {1}과 같은 인덱스 항목이 format 함수의 입력값으로 순서에 맞게 바뀐다.

# 이름으로 넣기
"I ate {number} apples, so I was sick for {day} days.".format(number=10, day=3)
# 'I ate 10 apples, so I was sick for 3 days.'
# {name} 형태를 사용할 경우, format 함수에 반드시 name=value와 같은 형태의 입력값이 있어야 한다.

# 인덱스와 이름을 혼용해서 넣기
"I ate {0} apples, so I was sick for {day} days.".format(10, day=3)
# 'I ate 10 apples, so I was sick for 3 days.'

# 왼쪽 정렬
"{0:<10}".format("hi")  # 'hi        '

# 오른쪽 정렬
"{0:>10}".format("hi")  # '        hi'

# 가운데 정렬
"{0:^10}".format("hi")  # '    hi    '

# 공백 채우기
"{0:=^10}".format("hi")  #'====hi===='
"{0:!<10}".format("hi")  # 'hi!!!!!!!!'
# 채워 넣을 문자 값은 정렬 문자 <, >, ^ 바로 앞에 넣어야 한다.

# 소수점 표현하기
y = 3.42134234
# 소수점 4자리까지만 표현
"{0:0.4f}".format(y)  # '3.4213'
# 자릿수를 10으로 맞추기
"{0:10.4f}".format(y)  # '    3.4213'

# '{' 또는 '}' 문자 표현하기
"{{ and }}".format()  # '{ and }'
# 중괄호 문자({})를 포매팅 문자가 아닌 문자 그대로 사용하고 싶은 경우에는 2개를 연속해서({{}}) 사용

 

 

# f 문자열 포매팅

  • python 3.6 버전부터 사용할 수 있다.
name = '홍길동'
age = 30
f'나의 이름은 {name}입니다. 나이는 {age}입니다.'  # '나의 이름은 홍길동입니다. 나이는 30입니다.'

# f 문자열 포매팅은 표현식을 지원한다.
# 표현식: 중괄호 안의 변수를 계산식과 함께 사용하는 것
age = 30
f'나는 내년이면 {age + 1}살이 된다.'  # '나는 내년이면 31살이 된다.'

# 딕셔너리
d = {'name': '홍길동', 'age': 30}'나의 이름은 홍길동입니다. 나이는 30입니다.'
f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'  # '나의 이름은 홍길동입니다. 나이는 30입니다.'

# 정렬
# 왼쪽 정렬
f'{"hi":<10}'  # 'hi        '
# 오른쪽 정렬
f'{"hi":>10}'  # '        hi'
# 가운데 정렬
f'{"hi":^10}'  # '    hi    '

# 공백 채우기
# 가운데 정렬하고 '=' 문자로 공백 채우기
f'{"hi":=^10}'  # '====hi===='
# 왼쪽 정렬하고 '!' 문자로 공백 채우기
f'{"hi":!<10}'  # 'hi!!!!!!!!'

# 소수점
y = 3.42134234
# 소수점 4자리까지만 표현
f'{y:0.4f}'  # '3.4213'
# 소수점 4자리까지 표현하고 총 자리수를 10으로 맞춤
f'{y:10.4f}'  # '    3.4213'

# {}를 문자 그대로 표시하려면 2개를 동시에 사용해야 한다.
f'{{ and }}'  # '{ and }'
728x90

'Python' 카테고리의 다른 글

[Python] 딕셔너리(Dictionary)  (0) 2024.01.12
[Python] 얕은 복사(shallow copy) vs 깊은 복사(deep copy)  (0) 2024.01.12
[Python] t 검정(t-test)  (0) 2024.01.11
[Python] 클래스  (2) 2024.01.10
[Python] 람다(lambda) 함수  (0) 2024.01.10