실제 이 함수를 보면 Output 을 보기 좋게 변경한다는게 왜 필요한 건지 고민을 하게 됩니다. 그래서 일반적인 강의나 수업에서는 textwrap (Python Document) 함수를 사용하는 예제를 보는 경우가 거의 없습니다.
제가 이 라이브러리를 포스트로 다루는 이유는 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 같이 모바일로 확인 하는 경우에는 이 함수를 쓰면 좀 가독성이 올라갈수 있습니다.
(다만 저는 하이퍼링크를 같이 넣고 있는데 하이퍼링크를 넣으니 밑줄이 좀 이상해보이는 경우도 있네요.)
이 문제에 대해서 개인적으로 좀 이야기 하려고 합니다.
사실 작년까지 이런 가독성을 어디까지 고려해야 되는지에 대해서 상당히 고민을 많이 했기 때문입니다.
작년에 다니던 회사가 상당히 형식과 규율을 중요시하는 회사이다 보니 더 신경을 많이 쓰게 된 것 같습니다.
그런데 지금 다니고 있는 회사는 조금 자유로운 회사이다 보니 속도면에서 너무나 큰 차이가 있습니다.
사실 “속도 우선이냐”, “규율과 형식이 우선이냐” 는 항상 그 조직의 문화를 어떻게 할 것인지 고민하는 사람이라면 꼭 선택을 해야되는 문제입니다.
저는 속도가 좀 있어도 형식이나 규율이 조금은 편한 문화가 맞는 것 같습니다.