f-string 문법과 서식 지정자
1. f-string 문법과 서식 지정자
1.1 f-string 소개
f-string, 즉 Formatted String Literals는 Python 3.6에서 도입된 문자열 포매팅 방법입니다. 이 방법은 문자열 내에 {}를 사용하여 변수나 표현식을 직접 삽입할 수 있게 해줍니다. 중괄호 안은 콜론(:)을 기준으로 왼쪽은 출력할 값, 오른쪽은 그 값을 어떻게 보여줄지 정하는 서식으로 나뉩니다.
1.2 기본 사용법
f-string을 사용하여 문자열 안에 변수를 쉽게 포함시킬 수 있습니다.
name = "Alice"
print(f"Hello, {name}") # 출력: Hello, Alice
1.3 표현식 사용하기
f-string 안에서는 계산이나 함수 호출과 같은 표현식을 직접 사용할 수 있습니다.
age = 20
print(f"Next year, you will be {age + 1}.") # 출력: Next year, you will be 21.
def greet(name):
return f"Hello, {name}"
print(greet("Alice")) # 출력: Hello, Alice
1.4 포매팅 지정자 사용하기
f-string에서 {} 안에 :를 사용하여 포맷을 지정할 수 있습니다. 이를 통해 소수점 아래 자릿수를 지정하거나, 정렬 방식을 정할 수 있습니다.
num = 3.14159
print(f"{num:.2f}") # 출력: 3.14
name = "Alice"
print(f"{name:>10}") # 출력: Alice
1.5 길이와 정렬
f-string에서도 문자열의 길이와 정렬을 지정할 수 있습니다.
char_a = '5'
int_a = 5
sample = 1234567890
print(f'{sample:>5}') # 넘어가도 잘리지 않음
print(f'{char_a:>5}') # 오른쪽 정렬
print(f'{char_a:<5}') # 왼쪽 정렬
print(f'{char_a:^5}') # 가운데 정렬
print(f'{int_a:0<5}') # 왼쪽 정렬, 빈자리 0으로 채움
print(f'{int_a:^10.2f}') # 가운데 정렬, float 타입 지정
1.6 중괄호 표현하기
f-string에서 {}를 리터럴 문자로 표현하려면, {{ 또는 }}와 같이 두 번 연속해서 사용합니다.
print(f"My set is {{1, 2, 3}}.") # 출력: My set is {1, 2, 3}.
x = 10
print(f"My set is {{{x}}}.") # 출력: My set is {10}.
문자열 안에 {}를 포함시키면서 변수를 삽입하려면, 중괄호를 세 번 사용합니다.
1.7 문자열의 형식을 지정하는 여러 방법
문자열을 형식화하는 방법은 시간이 지나면서 진화해왔으며, 현재는 주로 f-string 용법이 사용됩니다. 각 방식은 특정 상황과 요구사항에 따라 선택하여 사용할 수 있습니다. 예를 들어, 레거시 코드를 다룰 때는 이전 방식을 사용해야 할 수도 있습니다.
1.7.1 이전 방식 - 형식 문자열 사용
이전 방식은 형식 문자를 사용하여 변수를 문자열에 포함시키는 방식입니다. 여기에는 % 연산자를 사용하며, 각 형식 문자는 변수의 유형에 따라 다릅니다 (예: %s는 문자열, %d는 정수, %f는 실수).
name = '한사람'
age = 33
gender = '남성'
height = 56.789
# 예시
print('나의 이름은 %s입니다.' % name)
print('나의 이름은 "%s"입니다. 나이는 %d세이고 성별은 %s입니다.' % (name, age, gender))
print('나이는 %03d세이고 신장은 %6.2f입니다. 나의 이름은 %s입니다.' % (age, height, name))
1.7.2 str.format() 방식
Python 2.6에서 도입된 format() 메서드는 좀 더 유연하고 읽기 쉬운 형식 지정을 가능하게 합니다. 이 방식에서는 {}를 사용하며, format() 함수의 인자들이 이 중괄호에 순서대로 매핑됩니다.
# 예시
print('나의 이름은 {}입니다'.format(name))
print('나의 이름은 {0}입니다. 나이는 {1}세이고 성별은 {2}입니다.'.format(name, age, gender))
print('나이는 {age}세이고 성별은 {gender}입니다. 나의 이름은 {name}입니다.'.format(name=name, age=age, gender=gender))
1.7.3 Python 3.6 이상 - f-string 방식
Python 3.6부터는 f-string이라는 더욱 간결하고 직관적인 형식이 도입되었습니다. 이 방식은 문자열 앞에 f를 붙여 사용하며, 중괄호 안에 직접 변수 이름이나 표현식을 넣을 수 있습니다. 따옴표 한 개짜리 문자열이든 세 개짜리 여러 줄 문자열이든 앞에 f만 붙이면 됩니다.
# 예시
something = '볼펜'
EA = 2
one_length = 5.343
scale = 'cm'
print(f'{something} {EA}개의 길이는 {one_length*EA}{scale} 입니다.')
print(f'{something} {EA}개의 길이는 {one_length*EA:.1f}{scale} 입니다.')
1.8 문자열 정렬
문자열을 정렬하는 것은 텍스트 기반의 사용자 인터페이스, 보고서, 데이터 표시 등에서 일관된 레이아웃을 유지하기 위해 주로 사용됩니다. 정렬은 가독성을 높이고, 데이터를 더욱 명확하게 표현하는 데 도움이 됩니다.
format() 메소드를 사용하여 문자열의 길이와 정렬을 지정할 수 있습니다:
{:길이}: 출력할 데이터의 총 길이를 지정합니다. 기본적으로 문자열은 왼쪽 정렬되고, 숫자는 오른쪽 정렬됩니다.{:<길이}: 왼쪽 정렬합니다.{:>길이}: 오른쪽 정렬합니다.{:^길이}: 가운데 정렬합니다.- 추가 문자와 함께 사용하여 빈 공간을 채울 수도 있습니다 (예:
{:->길이}는 '-'로 채운 오른쪽 정렬).
print('Python is [{:15}]'.format('good')) # 기본 왼쪽 정렬
print('Python is [{:<15}]'.format('good')) # 왼쪽 정렬
print('Python is [{:>15}]'.format('good')) # 오른쪽 정렬
print('Python is [{:^15}]'.format('good')) # 가운데 정렬
print('Python is [{:-^15}]'.format('good')) # '-'로 채운 가운데 정렬
print('당신의 나이는 [{:15}]세'.format(22)) # 숫자의 기본 오른쪽 정렬
print('당신의 나이는 [{:<15}]세'.format(22)) # 숫자의 왼쪽 정렬
print('당신의 나이는 [{:>15}]세'.format(22)) # 숫자의 오른쪽 정렬
print('당신의 나이는 [{:^15}]세'.format(22)) # 숫자의 가운데 정렬
print('[{:15}]'.format('10')) # 문자열 '10', 왼쪽 정렬
print('[{:15}]'.format(10)) # 숫자 10, 오른쪽 정렬
f-string을 사용하는 경우에도 유사한 방식으로 정렬을 지정할 수 있습니다:
text = 'Hello'
number = 123
print(f'{text:<10}') # 왼쪽 정렬
print(f'{text:>10}') # 오른쪽 정렬
print(f'{number:^10d}') # 숫자의 가운데 정렬
문자열 정렬은 특히 데이터가 여러 열로 구성된 표나 목록을 출력할 때 매우 중요합니다. 정렬을 통해 데이터가 깔끔하게 배열되어 사용자가 정보를 더 쉽게 이해하고 읽을 수 있도록 합니다.
1.9 실습 코드
아래 노트북에 여러 테스트 코드를 넣어두었습니다. 다양한 상황에서 사용법을 숙지해보세요.
formatting.ipynb