본문 바로가기
Python/Python Programming

파이썬 포매팅: 문자열 출력을 더욱 풍부하게 만들어주는 기술

by Maccrey 2024. 6. 3.
반응형

파이썬은 다양한 데이터 처리 및 분석 기능을 제공하는 강력한 프로그래밍 언어입니다.

데이터를 출력할 때, 단순히 문자열을 출력하는 것보다 더욱 다채롭고 풍부하게 표현하고 싶을 때가 있습니다.

이때 파이썬 포맷팅 메서드를 활용하면 문자열 출력을 더욱 효과적으로 만들 수 있습니다.

 

파이썬 포맷팅 메서드 기본

 

파이썬 포맷팅 메서드는 문자열을 원하는 형식으로 변환하는 데 사용되는 기능입니다. 주로 다음과 같은 메서드를 사용합니다.

  • .format(): 가장 기본적인 포맷팅 메서드입니다. 문자열 내에 자리 표시자를 사용하여 변수 값을 삽입할 수 있습니다.
  • f-string: format() 메서드보다 간결하고 명확하게 코드를 작성할 수 있는 포맷팅 문자열입니다. 문자열 내에 직접 표현식을 삽입할 수 있습니다.
  • str.format(): 문자열 객체 자체에 포맷팅 기능을 제공하는 메서드입니다. format() 메서드와 유사하게 사용할 수 있습니다.

.format() 메서드 사용

 

.format() 메서드는 다음과 같은 방식으로 사용됩니다.

"{바운드 표현자}".format(변수1, 변수2, ...)
 
  • {}: 문자열 내에 삽입될 값을 나타내는 자리 표시자입니다.
  • 바운드 표현자: 문자열의 형식을 지정합니다.
  • 변수: 자리 표시자에 삽입될 값을 저장하는 변수입니다.

예제

이름 = "홍길동"
나이 = 30

print(f"이름: {이름}, 나이: {나이}")
 

위 코드는 다음과 같은 결과를 출력합니다.

이름: 홍길동, 나이: 30

 

바운드 표현자 종류

 

바운드 표현자는 문자열의 형식을 지정하는 데 사용됩니다. 주요 바운드 표현자 종류는 다음과 같습니다.

  • s: 문자열
  • d: 정수
  • f: 실수
  • b: 논리값
  • c: 문자

바운드 표현자 옵션

 

바운드 표현자는 옵션을 사용하여 더욱 세밀하게 형식을 지정할 수 있습니다. 주요 옵션은 다음과 같습니다.

  • :: 자리 표시자 폭 지정
  • .: 소수점 자리 지정
  • !: 왼쪽 정렬
  • >: 오른쪽 정렬
  • <: 중앙 정렬

예제

이름 = "홍길동"
나이 = 30

print(f"이름: {이름:<10}, 나이: {나이:>3}")
 

위 코드는 다음과 같은 결과를 출력합니다.

이름: 홍길동      , 나이: 30

 

.format() 메서드 활용

 

.format() 메서드는 다양한 상황에서 활용될 수 있습니다. 예를 들어, 다음과 같은 작업을 수행할 때 사용할 수 있습니다.

  • 데이터를 정렬된 표 형식으로 출력
  • 숫자를 소수점까지 지정된 형식으로 출력
  • 문자열을 원하는 길이로 맞춤
  • 문자열에 특수 문자 삽입

.format() 메서드 심화

 

.format() 메서드는 기본적인 형식 지정뿐만 아니라, 다양한 포맷 스타일을 적용하여 문자열 출력을 더욱 풍부하게 만들 수 있습니다. 다음은 주요 포맷 스타일과 활용 예시입니다.

 

1. 소수점 자리 지정:

  • .2f: 소수점 뒤 두 자리까지 표시합니다.
  • .3f: 소수점 뒤 세 자리까지 표시합니다.
  • .nf: 소수점 뒤 n 자리까지 표시합니다.

예시

금액 = 1234567.89

print(f"금액: {금액:.2f}")  # 결과: 금액: 1234567.89
print(f"금액: {금액:.3f}")  # 결과: 금액: 1234567.890
print(f"금액: {금액:.nf}")  # 결과: 금액: 1234567.890000
 

2. 천단 구분

  • ,: 숫자를 천단별로 구분하여 표시합니다.
  • n: 숫자를 n자리마다 구분하여 표시합니다.

예시

금액 = 1234567.89

print(f"금액: {금액:,}")  # 결과: 금액: 1,234,567.89
print(f"금액: {금액:,.2f}")  # 결과: 금액: 1,234,567.89
print(f"금액: {금액:n,.2f}")  # 결과: 금액: 1,234,567.89
 

3. 부호 표시

  • +: 양수일 때 부호를 표시합니다.
  • -: 음수일 때 부호를 표시합니다.

예시

금액 = 1234567.89
음수금액 = -금액

print(f"금액: {금액:+,.2f}")  # 결과: 금액: +1,234,567.89
print(f"음수금액: {음수금액:+.2f}")  # 결과: 음수금액: -1,234,567.89
 

4. 지수 표현

  • e: 지수 표현으로 표시합니다.
  • E: 지수 표현으로 표시합니다.

예시

큰수 = 12345678901234567890.12345678901234567890

print(f"큰수: {큰수:e}")  # 결과: 큰수: 1.234568e+18
print(f"큰수: {큰수:E}")  # 결과: 큰수: 1.234568E+18
 

5. 특정 문자 삽입

  • %: 특정 문자를 숫자 앞에 삽입합니다.
  • _: 특정 문자를 숫자 사이에 삽입합니다.

예시

금액 = 1234567.89

print(f"금액: %{금액:,.2f}")  # 결과: 금액: 100%1,234,567.89
print(f"금액: {_금액:,.2f}")  # 결과: 금액: 1_234_567.89

 

6. 포맷 스타일 조합

앞서 소개한 다양한 포맷 스타일을 조합하여 더욱 복잡하고 유연한 숫자 포맷팅을 수행할 수 있습니다.

 

예시

금액 = 1234567.89

# 1. 양수일 때만 천단 구분 및 소수점 두 자리 표시
print(f"금액: ${금액:,.2f}")  # 결과: 금액: $1,234,567.89

# 2. 음수일 때는 부호 표시, 천단 구분, 소수점 두 자리 표시
음수금액 = -금액
print(f"음수금액: ${음수금액:+,.2f}")  # 결과: 음수금액: -$1,234,567.89

# 3. 지수 표현으로 표시하고, 지수 부분은 소문자로 표시
큰수 = 12345678901234567890.12345678901234567890
print(f"큰수: {큰수:e}")  # 결과: 큰수: 1.234568e+18
print(f"큰수: {큰수:le}")  # 결과: 큰수: 1.234568e+18

# 4. 특정 문자 삽입 및 천단 구분, 소수점 두 자리 표시
print(f"금액: {_금액:,.2f}원")  # 결과: 금액: 1_234_567.89원
print(f"금액: ${금액:,.2f}억")  # 결과: 금액: $12.35억
 

주의 사항

  • 포맷 스타일을 조합할 때는 서로 호환되는지 확인해야 합니다. 예를 들어, 천단 구분 스타일과 소수점 표시 스타일을 함께 사용할 경우, 올바른 결과가 표시되지 않을 수 있습니다.
  • 너무 복잡하게 포맷 스타일을 조합하면 코드 가독성이 저하될 수 있으므로 적절하게 사용해야 합니다.

7. .format() 메서드 활용: 실제 코드 예시

다음은 .format() 메서드를 실제 코드에서 활용하는 예시입니다.

 

예시 1: 데이터 표 출력

데이터 = [
    {"이름": "홍길동", "나이": 30, "금액": 1234567.89},
    {"이름": "김철수", "나이": 25, "금액": 876543.21},
    {"이름": "박영희", "나이": 40, "금액": 987654.32},
]

print("-" * 40)
print(f"| {'이름':<10} | {'나이':^5} | {'금액':>15} |")
print("-" * 40)
for row in 데이터:
    이름 = row["이름"]
    나이 = row["나이"]
    금액 = row["금액"]
    print(f"| {이름:<10} | {나이:^5} | {금액:>15.2f} |")
print("-" * 40)
 

위 코드는 다음과 같은 결과를 출력합니다.

--------------------------------------------------
| 이름      | 나이 | 금액           |
--------------------------------------------------
| 홍길동     | 30  | 1,234,567.89 |
| 김철수     | 25  | 876,543.21 |
| 박영희     | 40  | 987,654.32 |
--------------------------------------------------

 

예시 2: 로그 출력 (계속)

로그.info(f"정보 메시지: {문자열}")
로그.warning(f"경고 메시지: 오류 발생, {오류정보}")
로그.error(f"오류 메시지: 예외 발생, {예외정보}")
 

위 코드는 다음과 같은 로그 메시지를 출력합니다.

DEBUG:__main__: 디버그 메시지: 변수값=값
INFO:__main__: 정보 메시지: 문자열
WARNING:__main__: 경고 메시지: 오류 발생, 오류정보
ERROR:__main__: 오류 메시지: 예외 발생, 예외정보

 

예시 3: 사용자 입력값 처리

이름 = input("이름을 입력하세요: ")
나이 = int(input("나이를 입력하세요: "))

print(f"안녕하세요, {이름}님! 나이는 {나이}세입니다.")
 

위 코드는 사용자로부터 이름과 나이를 입력받고, 입력받은 값을 사용하여 문자열을 포맷하여 출력합니다.

 

.format() 메서드 활용 요약

  • .format() 메서드는 문자열 내에 자리 표시자를 사용하여 변수 값을 삽입하는 데 사용되는 기본적인 포맷팅 메서드입니다.
  • 다양한 바운드 표현자와 옵션을 사용하여 숫자, 문자열, 날짜 등을 원하는 형식으로 표시할 수 있습니다.
  • 포맷 스타일을 조합하여 더욱 복잡하고 유연한 문자열 포맷팅을 수행할 수 있습니다.
  • 실제 코드에서 데이터 표 출력, 로그 출력, 사용자 입력값 처리 등 다양한 상황에 활용될 수 있습니다.

주의 사항

  • .format() 메서드는 파이썬 3에서 도입된 기능입니다. 파이썬 2에서는 사용할 수 없습니다.
  • 너무 복잡하게 포맷 스타일을 조합하면 코드 가독성이 저하될 수 있으므로 적절하게 사용해야 합니다.

8. Template 문자열 활용

 

Template 문자열은 Jinja2와 같은 템플릿 엔진을 사용하여 문자열을 동적으로 생성하는 데 유용한 기능입니다.

 

Template 문자열 기본

  • {{ 변수명 }}: 문자열 내에 변수를 삽입하는 데 사용됩니다.
  • {% if 조건 %}{% endif %}: 조건 분기를 처리하는 데 사용됩니다.
  • {% for 변수 in 리스트 %}{% endfor %}: 반복 루프를 처리하는 데 사용됩니다.
  • {{ ... }}: 특수 표현식을 사용하는 데 사용됩니다.

예시

from jinja2 import Template

템플릿 = """
안녕하세요, {{ 이름 }}님!

나이는 {{ 나이 }}세입니다.

{{ 좋아하는 음식 }}을 좋아하시나요?
"""

데이터 = {
    "이름": "홍길동",
    "나이": 30,
    "좋아하는 음식": "김밥",
}

결과 = Template(템플릿).render(데이터)
print(결과)
 

위 코드는 다음과 같은 결과를 출력합니다.

안녕하세요, 홍길동님!

나이는 30세입니다.

김밥을 좋아하시나요?

 

Template 문자열 활용

 

Template 문자열은 다음과 같은 상황에서 활용될 수 있습니다.

  • HTML 템플릿 생성: 웹 페이지를 동적으로 생성할 때 사용됩니다.
  • 이메일 작성: 개인 맞춤형 이메일을 작성할 때 사용됩니다.
  • 보고서 작성: 데이터를 기반으로 보고서를 자동으로 생성할 때 사용됩니다.
  • 문서 생성: 다양한 형식의 문서를 동적으로 생성할 때 사용됩니다.

Template 문자열 장점

  • 코드보다 더 읽기 쉽고 이해하기 쉽습니다.
  • 문자열을 동적으로 생성하므로 유연성이 높습니다.
  • 반복적인 작업을 자동화하는 데 도움이 됩니다.

Template 문자열 단점

  • 코드보다 더 복잡할 수 있습니다.
  • 템플릿 엔진을 설치해야 합니다.

9. 결론

 

파이썬 포맷팅은 .format(), f-string, Template 문자열 등 다양한 방법으로 문자열 출력을 더욱 풍부하게 만들 수 있는 강력한 기능입니다. 상황에 따라 적절한 방법을 선택하여 사용하면 코드 가독성을 높이고 문자열 출력을 더욱 효과적으로 만들 수 있습니다.

 

추가 자료

10. 질문 및 답변

Template 문자열에 대한 질문이나 궁금한 점이 있으면 언제든지 물어보세요.

 

주의

  • Template 문자열을 사용하려면 Jinja2와 같은 템플릿 엔진을 설치해야 합니다.
  • Template 문자열은 코드보다 더 복잡할 수 있으므로 적절하게 사용해야 합니다.
안녕하세요, 홍길동님!

나이는 30세입니다.

김밥을 좋아하시나요?

 

 

Template 문자열 활용

Template 문자열은 다음과 같은 상황에서 활용될 수 있습니다.

  • HTML 템플릿 생성: 웹 페이지를 동적으로 생성할 때 사용됩니다.
  • 이메일 작성: 개인 맞춤형 이메일을 작성할 때 사용됩니다.
  • 보고서 작성: 데이터를 기반으로 보고서를 자동으로 생성할 때 사용됩니다.
  • 문서 생성: 다양한 형식의 문서를 동적으로 생성할 때 사용됩니다.

Template 문자열 장점

  • 코드보다 더 읽기 쉽고 이해하기 쉽습니다.
  • 문자열을 동적으로 생성하므로 유연성이 높습니다.
  • 반복적인 작업을 자동화하는 데 도움이 됩니다.

Template 문자열 단점

  • 코드보다 더 복잡할 수 있습니다.
  • 템플릿 엔진을 설치해야 합니다.

9. 결론

파이썬 포맷팅은 .format(), f-string, Template 문자열 등 다양한 방법으로 문자열 출력을 더욱 풍부하게 만들 수 있는 강력한 기능입니다. 상황에 따라 적절한 방법을 선택하여 사용하면 코드 가독성을 높이고 문자열 출력을 더욱 효과적으로 만들 수 있습니다.

 

추가 자료:

10. 질문 및 답변:

Template 문자열에 대한 질문이나 궁금한 점이 있으면 언제든지 물어보세요.

주의:

  • Template 문자열을 사용하려면 Jinja2와 같은 템플릿 엔진을 설치해야 합니다.
  • Template 문자열은 코드보다 더 복잡할 수 있으므로 적절하게 사용해야 합니다.

수발가족을 위한 일기장 “나비일기장”

 

https://play.google.com/store/apps/details?id=com.maccrey.navi_diary_release

 

비공개테스트를 위한 20명의 테스터모집 앱 "테스터 쉐어"

 

https://play.google.com/store/apps/details?id=com.maccrey.tester_share_release

반응형