안녕하세요, codingbird입니다.
지난 시간에 문자열에 대한 기본적인 활용을 배웠습니다!
특수 문자, 이스케이프 코드, len 함수, 인덱싱, 슬라이싱 등을 배웠습니다.
이번 시간에도 문자열에 대해서 좀 더 깊게 배워볼 건데요,
문자열 포맷 코드를 활용한 문자열 포맷팅을 배워보겠습니다.
1. 문자열 포맷팅 - 문자열 포맷 코드 활용
문자열 포맷팅이란, 문자열 내에 어떤 값을 삽입하거나 문자열을 특정 형식에 맞추는 것을 말합니다.
예를 들어, 여러분이 문자열 내에 특정 부분만 반복적으로 변화를 주고 싶어요.
문자열 포맷팅을 사용하면, 문자열 내에 특정 부분에 내가 원하는 값을 삽입할 수 있습니다.
이해가 잘 안되시나요? 아래 예시를 보겠습니다.
# 문자열 포맷팅: 기본 예제
s1 = "I have %d apples" % 3
print(s1)
print("-" * 50)
# 문자열 포맷팅: 형식 활용하기
s2 = "I have %d apples"
print(s2 % 3)
print(s2 % 5)
print(s2 % 9)
print("-" * 50)
# 문자열 포맷팅: 2개 이상의 값 넣기
s3 = "I have %d apples and %d bananas" % (3, 4)
print(s3)
print("-" * 50)
# 문자열 포맷팅: 형식을 활용하여 2개 이상의 값 넣기
s4 = "I have %d apples and %d bananas"
print(s4 % (2, 5))
print(s4 % (6, 2))
print(s4 % (12, 4))
기본 예제를 보시면, 큰따옴표(") 뒤의 % 뒤에 있는 숫자가 문자열 내의 %d 부분에 들어간다는 것을 할 수 있습니다.
이를 통해, 정해진 문자열 형식을 다양하게 활용할 수 있습니다!
기본 예제 밑에 형식 활용 부분을 봅시다.
s2와 같이 문자열 내에 %d를 넣어두고, s2 % 3 와 같이 활용하면,
% 뒤에 어떤 정수를 넣냐에 따라 다양한 문자열을 출력할 수 있습니다.
2개 이상의 값에 대해서도 활용할 수 있습니다.
정수 2개를 특정 부분들에 각각 삽입하고 싶다면,
해당 부분들에 각각 %d를 넣고, 문자열 뒤의 % 뒤에 (2, 3) 와 같이 각 값을 순서대로 구분에서 넣으시면 됩니다.
참고로, 문자열 안에 정수를 넣고 싶다면 %d와 같은 문자열 포맷 코드를 삽입하셔야 합니다.
문자열 포맷팅에서는, 문자열 바깥의 값을 각 문자열 포맷 코드에 해당하는 형식으로 받아들입니다.
문자열 포맷 코드의 종류는 아래와 같습니다.
코드 | 받아들이는 형식 |
%d | 정수 |
%f | 소수 |
%c | 문자 1개 |
%s | 문자열 |
%o | 8진수 |
%x | 16진수 |
아래 코드를 통해 주요 코드를 확실하게 알아봅시다.
# %d - 정수로 인식
s1 = "I am %d years old"
print(s1 % 20)
print(s1 % 30)
print("-" * 50)
# %f - 소수로 인식 (부동 소수)
s2 = "It's %f'c"
print(s2 % 23.5)
print(s2 % 2.5)
print("-" * 50)
# %c - 문자 하나로 인식
s3 = "The alphabet is '%c'"
print(s3 % "a")
print(s3 % "P")
print("-" * 50)
# %s - 문자열로 인식
s4 = "My name is %s"
print(s4 % "codingbird")
print(s4 % "happybird")
print("-" * 50)
# 문자열 포맷팅 - 두 개 이상의 포맷팅
s5 = "My name is %s.\nI am %d years old\n"
print(s5 % ("codingbird", 20))
print(s5 % ("happybird", 30))
2. 문자열 포맷팅 시, % 기호 작성
문자열 포맷 코드에 %가 쓰이죠?
이전에 이스케이프 코드에 사용되는 백슬래시(\) 하나를 문자 그대로 표현하기 위해서 \\로 작성했습니다.
%의 경우에, 기본적으로는 %로 표현해도 되지만,
문자열 포맷 코드가 포함되는 코드에서는 % 하나를 문자 그대로 표현하기 위해서 %%로 작성합니다.
# 백슬래시(\) 하나를 문자 그대로 표현하기
print("\\") # 백슬래시(\) 하나만 출력
# 일반적으로 %%를 출력할 때
print("%%") # %%로 출력됨
print("It's 75%") # % 하나만 써도 잘 출력됨
# 문자열 포맷 코드와 함께 사용할 때
print("It's %d%%" % 99)
문자열 포맷 코드 %d 뒤에 %를 하나만 사용하면 오류가 발생합니다.
3. 문자열 포맷 코드 - 길이 설정, 정렬 설정
문자열 포맷 코드와 숫자를 활용하면 아래와 같이,
포맷팅되는 값의 전체 길이를 설정하고, 원하는 방향으로 정렬하는 것이 가능합니다.
# 전체 길이를 설정하고, 오른쪽으로 정렬하기
print("%s" % "Hello") # 그냥 활용하기
print("%8s" % "Hello") # 전체 길이를 8로 설정하고, 오른쪽으로 정렬
print("%12s" % "Hello") # 전체 길이를 12로 설정하고, 오른쪽으로 정렬
# 전체 길이를 설정하고, 왼쪽으로 정렬하기
print("%s, World!" % "Hello") # 그냥 활용하기
print("%-8s, World!" % "Hello") # 전체 길이를 8로 설정하고, 왼쪽으로 정렬
print("%-12s, World!" % "Hello") # 전체 길이를 12로 설정하고, 왼쪽으로 정렬
# 이렇게 문자열 포맷 코드로 입력된 값의 전체 길이를 설정할 수 있고, 정렬 방향도 정할 수 있습니다.
# 정렬하고 남은 부분은 모든 공백이 됩니다.
4. 소수점 이하 자릿수 설정
아까 위에서 문자열 포맷팅으로 통해서 소수를 출력할 때,
소수가 소수점 밑으로 매우 길게 출력되는 경우가 있었을 것입니다.
이럴 때는 소수점 밑으로 몇 번째까지만 출력할지를 정할 수 있습니다.
아래 코드를 봅시다.
# 문자열 포맷팅에서 소수점 이하의 길이 설정하기
f = 3.14
print(f) # 그냥 출력하기 -> 3.14가 출력됨
print("%f" % f) # 문자열 포맷팅 그냥 활용하기 -> 3.140000이 출력됨
print("%0.2f" % f) # 소수점 이하를 2자리만 -> 3.14가 출력됨
print("%0.4f" % f) # 소수점 이하를 4자리만 -> 3.1400이 출력됨
이렇게 하면, 문자열 포맷팅을 써도 소수점 이하의 길이를 설정할 수 있습니다.
이렇게 문자열 포맷 코드를 활용한 문자열 포맷팅을 알아보았습니다.
문자열 포맷 코드 말고도, format 함수를 활용한 문자열 포맷팅, f 문자열 포맷팅 등이 있습니다.
이 부분은 다음에 시간이 될 때 따로 소개드리겠습니다.
일단은 문자열 포맷 코드를 활용한 문자열 포맷팅을 알고 있으니까요!
다음 시간부터는 여러 가지 형태의 배열에 대해 알아보겠습니다!
오늘도 정말 수고하셨습니다~
'Python' 카테고리의 다른 글
[Python][기초] 딕셔너리(Dictionary) (0) | 2025.04.24 |
---|---|
[Python][기초] 리스트(List) (0) | 2025.04.09 |
[Python][기초] 문자열 활용 (0) | 2025.04.02 |
[Python][기초] 파이썬 - 연산자 (0) | 2025.03.28 |
[Python][기초] 파이썬 - 변수와 자료형 (1) | 2025.03.26 |