실제 이 함수를 보면 Output 을 보기 좋게 변경한다는게 왜 필요한 건지 고민을 하게 됩니다. 그래서 일반적인 강의나 수업에서는 textwrap (Python Document) 함수를 사용하는 예제를 보는 경우가 거의 없습니다.

textwarp

제가 이 라이브러리를 포스트로 다루는 이유는 Python 공식 Document를 보다가 아 이게 있으면 쓸때가 있겠는데 싶어서 이야기 하는 거겠죠?

지금 개인적으로 사용하고 있는 Gmail, Slack과 Telegram을 통해 report를 받고 있는데 조금만 수정해서 Output 을 변경하면 가독성이 좋아 지는 것을 볼 수 있습니다.

textwrap Code & Output

import textwrap

long_text = "In the journey of achieving your dreams, \
remember that success is not final, failure is not fatal: \
it is the courage to continue that counts. \
Every setback is a chance to learn and grow, \
and every victory is just a step towards your next challenge. \
Stay resilient and keep moving forward."

wrapped_text = textwrap.fill(long_text, width=60)
print(wrapped_text)

# output:
# In the journey of achieving your dreams, remember that
# success is not final, failure is not fatal: it is the
# courage to continue that counts. Every setback is a chance
# to learn and grow, and every victory is just a step towards
# your next challenge. Stay resilient and keep moving forward.

wrapped_list = textwrap.wrap(long_text, width=60)
for line in wrapped_list:
    print(line)

# output:
# In the journey of achieving your dreams, remember that
# success is not final, failure is not fatal: it is the
# courage to continue that counts. Every setback is a chance
# to learn and grow, and every victory is just a step towards
# your next challenge. Stay resilient and keep moving forward.

wrapped_text = textwrap.fill(long_text, width=60)

# Indentation
indented_text = textwrap.indent(wrapped_text, prefix='    ')
print(indented_text)

# output :
#     In the journey of achieving your dreams, remember that
#     success is not final, failure is not fatal: it is the
#     courage to continue that counts. Every setback is a chance
#     to learn and grow, and every victory is just a step towards
#     your next challenge. Stay resilient and keep moving forward.


# Indentation delete
dedented_text = textwrap.dedent(indented_text)
print(dedented_text)

# output :
# In the journey of achieving your dreams, remember that
# success is not final, failure is not fatal: it is the
# courage to continue that counts. Every setback is a chance
# to learn and grow, and every victory is just a step towards
# your next challenge. Stay resilient and keep moving forward.

# Reduce
shortened_text = textwrap.shorten(long_text, width=50, placeholder="...")
print(shortened_text)

# output :
# This is a very long piece of text that needs to...

# TextWrapper initial
wrapper = textwrap.TextWrapper(width=60, initial_indent='* ', subsequent_indent='  ')
wrapped_text = wrapper.fill(long_text)
print(wrapped_text)

# output:
# * In the journey of achieving your dreams, remember that
#   success is not final, failure is not fatal: it is the
#   courage to continue that counts. Every setback is a chance
#   to learn and grow, and every victory is just a step
#   towards your next challenge. Stay resilient and keep
#   moving forward.

사실 직장생활을 하면서 이런 가독성을 불필요한 작업이라고 생각했었습니다.

절차를 느리게 하고 불필요한 작업이 늘어나고 의미 전달이 오히려 끊어질 수도 있고….

그런데 서비스를 하는 입장에서는 질을 높히기 좋은 아이템이 될 수 있을 것이라 생각합니다.

사실 제가 뉴스나 정보를 수집해서 요약하고 중복을 제거하고 나서 Report를 받고 있는데요.

Report에서 gmail로 받고 있는 테스크에서는 이 함수가 필요 없어 보입니다. 그런데 Slack이나 Telegram 같이 모바일로 확인 하는 경우에는 이 함수를 쓰면 좀 가독성이 올라갈수 있습니다.

(다만 저는 하이퍼링크를 같이 넣고 있는데 하이퍼링크를 넣으니 밑줄이 좀 이상해보이는 경우도 있네요.)

이 문제에 대해서 개인적으로 좀 이야기 하려고 합니다.

사실 작년까지 이런 가독성을 어디까지 고려해야 되는지에 대해서 상당히 고민을 많이 했기 때문입니다.

작년에 다니던 회사가 상당히 형식과 규율을 중요시하는 회사이다 보니 더 신경을 많이 쓰게 된 것 같습니다.

그런데 지금 다니고 있는 회사는 조금 자유로운 회사이다 보니 속도면에서 너무나 큰 차이가 있습니다.

사실 “속도 우선이냐”, “규율과 형식이 우선이냐” 는 항상 그 조직의 문화를 어떻게 할 것인지 고민하는 사람이라면 꼭 선택을 해야되는 문제입니다.

저는 속도가 좀 있어도 형식이나 규율이 조금은 편한 문화가 맞는 것 같습니다.

By Mark

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다