WeniVooks

검색

견고한 파이썬

f-string 문법과 서식 지정자

1. f-string 소개

f-string, 즉 Formatted String Literals는 Python 3.6에서 도입된 문자열 포매팅 방법입니다. 이 방법은 문자열 내에 {}를 사용하여 변수나 표현식을 직접 삽입할 수 있게 해줍니다.

2. 기본 사용법

f-string을 사용하여 문자열 안에 변수를 쉽게 포함시킬 수 있습니다.

name = "Alice" print(f"Hello, {name}") # 출력: Hello, Alice

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

4. 포매팅 지정자 사용하기

f-string에서 {} 안에 :를 사용하여 포맷을 지정할 수 있습니다. 이를 통해 소수점 아래 자릿수를 지정하거나, 정렬 방식을 정할 수 있습니다.

num = 3.14159 print(f"{num:.2f}") # 출력: 3.14 name = "Alice" print(f"{name:>10}") # 출력: Alice

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 타입 지정

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}.

문자열 안에 {}를 포함시키면서 변수를 삽입하려면, 중괄호를 세 번 사용합니다.

7. 문자열의 형식을 지정하는 여러 방법

문자열을 형식화하는 방법은 시간이 지나면서 진화해왔으며, 현재는 주로 f-string 용법이 사용됩니다. 각 방식은 특정 상황과 요구사항에 따라 선택하여 사용할 수 있습니다. 예를 들어, 레거시 코드를 다룰 때는 이전 방식을 사용해야 할 수도 있습니다.

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))
7.2 Python 3 - str.format() 방식

Python 3부터 도입된 format() 메서드는 좀 더 유연하고 읽기 쉬운 형식 지정을 가능하게 합니다. 이 방식에서는 {}를 사용하며, format() 함수의 인자들이 이 중괄호에 순서대로 매핑됩니다.

# 예시
print('나의 이름은 {}입니다'.format(name))
print('나의 이름은 {0}입니다. 나이는 {1}세이고 성별은 {2}입니다.'.format(name, age, gender))
print('나이는 {age}세이고 성별은 {gender}입니다. 나의 이름은 {name}입니다.'.format(name=name, age=age, gender=gender))
# 예시
print('나의 이름은 {}입니다'.format(name))
print('나의 이름은 {0}입니다. 나이는 {1}세이고 성별은 {2}입니다.'.format(name, age, gender))
print('나이는 {age}세이고 성별은 {gender}입니다. 나의 이름은 {name}입니다.'.format(name=name, age=age, gender=gender))
7.3 Python 3.6 이상 - f-string 방식

Python 3.6부터는 f-string이라는 더욱 간결하고 직관적인 형식이 도입되었습니다. 이 방식은 문자열 앞에 f를 붙여 사용하며, 중괄호 안에 직접 변수 이름이나 표현식을 넣을 수 있습니다. 주로 작은 다옴표 앞에 또는 작은 따옴표 3개 앞에 사용합니다.

# 예시 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} 입니다.')

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}') # 숫자의 가운데 정렬

문자열 정렬은 특히 데이터가 여러 열로 구성된 표나 목록을 출력할 때 매우 중요합니다. 정렬을 통해 데이터가 깔끔하게 배열되어 사용자가 정보를 더 쉽게 이해하고 읽을 수 있도록 합니다.

9. 실습 코드

아래 노트북에 여러 테스트 코드를 넣어두었습니다. 다양한 상황에 사용법을 숙지해보세요.

formatting.ipynb
{"packages":["numpy","pandas","matplotlib","lxml"]}
14.4 비트연산14.6 비동기와 코루틴