새소식

반응형
Python/라이브러리

파이썬 """ 삼중 따옴표 출력 문제 해결! (feat.dedent)

  • -
반응형

"python library textwrap dedent" text img

— dedent()로 깔끔한 문자열 만들기 꿀팁 —


문제 상황: 잘못된 문자열 출력

이메일 템플릿을 생성하는 파이썬 스크립트를 작성 중 문제가 생겼어요.
코드는 대략 이렇게 생겼어요:

def generate_email():
    return """
    Hello User,  
    Your account will be deactivated soon.  
    Please update your information to continue using our service.  
    Regards,  
    Customer Care Team  
    """

print(generate_email())

겉보기엔 아무 문제 없어 보이죠?
하지만 출력 결과를 확인한 순간... 👀

    Hello User,  
    Your account will be deactivated soon.  
    Please update your information to continue using our service.  
    Regards,  
    Customer Care Team  

어라? 🤔
원래 기대한 결과는 이랬어야 했는데요:

Hello User,  
Your account will be deactivated soon.  
Please update your information to continue using our service.  
Regards,  
Customer Care Team  

❗️ 문제의 원인: 삼중 따옴표(""")의 함정

파이썬에서 삼중 따옴표(""")로 감싼 문자열
그 안의 들여쓰기(Indentation) 를 그대로 유지합니다.

그래서 함수 내부에 문자열을 작성하면,
함수의 들여쓰기까지 문자열에 포함되어버리죠.
결과적으로 각 줄 앞에 불필요한 공백이 생기는 것입니다.


해결 방법: dedent()의 마법

이 문제를 해결하기 위해 수동으로 공백을 지웠다면…
오늘부터는 더 쉽고 깔끔한 방법을 사용하세요!

바로, textwrap 모듈의 dedent() 함수를 활용하는 것입니다.

💡 수정된 코드:

from textwrap import dedent  

def generate_email():  
    return dedent("""  
        Hello User,  
        Your account will be deactivated soon.  
        Please update your information to continue using our service.  
        Regards,  
        Customer Care Team  
    """)

print(generate_email())

🎯 결과:

Hello User,  
Your account will be deactivated soon.  
Please update your information to continue using our service.  
Regards,  
Customer Care Team  

와우! 🤩
불필요한 공백 없이 깔끔한 결과가 출력됩니다.


📌 dedent()란?

  • dedent()는 여러 줄로 된 문자열의 앞부분 공백을 자동으로 제거하는 함수입니다.
  • 코드의 들여쓰기는 유지하면서도, 출력 결과는 깔끔하게 만들 수 있죠.

textwrap은 파이썬 표준 라이브러리에 포함되어 있기 때문에 따로 설치할 필요가 없습니다.

그냥 아래와 같이 바로 import 해서 사용하면 됩니다:

from textwrap import dedent

def generate_message():
    return dedent("""
        Hello there,
        This message is formatted correctly!
        Have a great day!
    """)

print(generate_message())

 추가 정보:

  • 파이썬 2.7 이상 또는 파이썬 3.x 버전에서는 기본적으로 포함되어 있습니다.
  • 만약 ModuleNotFoundError가 발생한다면, 파이썬 환경 설정에 문제가 있을 수 있습니다. 이 경우에는 가상 환경 설정을 다시 확인해보세요.

 

🔥 dedent()가 유용한 상황들

1️⃣ SQL 쿼리 작성 시

query = dedent("""
    SELECT name, email
    FROM customers
    WHERE is_active = TRUE
    ORDER BY created_at DESC;
""")

2️⃣ 로그 메시지 포맷팅 시

log_message = dedent("""
    [WARNING] Disk space is running low!
    Please clear unnecessary files to avoid system issues.
""")

3️⃣ HTML, Markdown, 이메일 템플릿 생성 시

html = dedent("""
    <html>
        <body>
            <h2>Thank You for Registering!</h2>
            <p>Your account has been successfully created.</p>
        </body>
    </html>
""")

4️⃣ 긴 Docstring 작성 시

def process_data():
    """
    This function processes raw data from various sources.
    It cleans, transforms, and prepares the data for analysis.
    """
    pass

 


🎯 마무리: 알고 나면 너무 쉬운 dedent()

지금까지 오랜기간 동안 파이썬을 사용했지만, 이 작은 팁을 모르고 있었어요. print할때 여백을 맞추기 위 밑의 코드처럼 사용했었는데요.

def generate_email():
    return """
Hello User,  
Your account will be deactivated soon.  
Please update your information to continue using our service.  
Customer Care Team  
"""
print(generate_email())

이제라도 알게되서 너무 좋습니다.😊

 

저와 같은 문제를 알고 있다가 해결되셨다면 공감 눌러주세요!

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.