파이썬에서는 textwrap 모듈을 사용하여 일반 텍스트를 형식화하고 줄바꿈할 수 있습니다. 이 모듈은 입력 단락의 줄바꿈 위치를 조정하는 다양한 옵션을 제공하여, 긴 텍스트를 원하는 폭에 맞게 깔끔하게 정리할 수 있도록 도와줍니다.
이 모듈을 사용하려면 먼저 코드에 textwrap 모듈을 임포트해야 합니다.
import textwrap
TextWrapper 생성자의 인스턴스 속성
TextWrapper 인스턴스의 생성자 속성은 다음과 같습니다.
| 번호 | 속성 및 설명 |
|---|---|
| 1 | width 줄의 최대 길이입니다. 기본값은 70입니다. |
| 2 | expand_tabs 이 값이 True이면 모든 탭 문자가 공백으로 대체됩니다. 기본값은 True입니다. |
| 3 | tabsize expand_tabs 속성이 True일 때 탭 크기를 다양한 값으로 설정할 수 있습니다. 기본값은 8입니다. |
| 4 | replace_whitespace True로 설정되면 텍스트 내의 모든 공백 문자가 단일 공백으로 대체됩니다. 기본값은 True입니다. |
| 5 | drop_whitespace 텍스트 래핑 후 각 줄의 시작 부분과 끝 부분에 있는 공백을 제거합니다. 기본값은 True입니다. |
| 6 | initial_indent 래핑된 텍스트의 첫 번째 줄 앞에 지정한 문자열을 추가합니다. 기본값은 ''(공백 없음)입니다. |
| 7 | subsequent_indent 래핑된 텍스트의 첫 번째 줄을 제외한 모든 줄 앞에 지정한 문자열을 추가합니다. 기본값은 ''(공백 없음)입니다. |
| 8 | placeholder 텍스트가 잘렸을 경우 출력 결과의 끝에 추가되는 문자열입니다. 기본값은 '[...]'입니다. |
| 9 | max_lines 텍스트 래핑 후 출력될 최대 줄 수를 결정합니다. 값이 None이면 줄 수에 제한이 없습니다. 기본값은 None입니다. |
| 10 | break_long_words 지정된 너비보다 긴 단어가 있을 경우 해당 단어를 잘라서 너비에 맞춥니다. 기본값은 True입니다. |
| 11 | break_on_hyphens 복합어의 경우 하이픈(-) 뒤에서 줄바꿈을 허용합니다. 기본값은 True입니다. |
텍스트 래핑 메서드
textwrap 모듈에는 텍스트를 처리하는 여러 유용한 메서드가 포함되어 있습니다. 각 메서드의 특징을 살펴보겠습니다.
textwrap.wrap(text, width=70, **kwargs)
입력된 단락을 지정된 줄 너비에 맞게 래핑합니다. 기본 줄 너비는 70자이며, 래핑된 각 줄이 저장된 리스트를 반환합니다.
textwrap.fill(text, width=70, **kwargs)
wrap() 메서드와 유사하게 동작하지만, 리스트가 아닌 하나의 문자열을 반환한다는 점이 다릅니다. 지정된 너비를 초과하는 지점마다 개행 문자(\n)를 삽입합니다.
textwrap.shorten(text, width, **kwargs)
문자열을 지정된 너비만큼 잘라내어 축약합니다. 잘린 후 텍스트의 전체 길이는 지정된 너비와 같아지며, 문자열 끝에 '[...]'가 자동으로 추가됩니다.
예제 코드
import textwrap
python_desc = """Python is a general-purpose interpreted, interactive, object-oriented,
and high-level programming language. It was created by Guido van Rossum
during 1985- 1990. Like Perl, Python source code is also available under
the GNU General Public License (GPL). This tutorial gives enough
understanding on Python programming language."""
my_wrap = textwrap.TextWrapper(width = 40)
wrap_list = my_wrap.wrap(text=python_desc)
for line in wrap_list:
print(line)
single_line = """Python is a general-purpose interpreted, interactive, object-oriented,
and high-level programming language."""
print('\n\n' + my_wrap.fill(text = single_line))
short_text = textwrap.shorten(text = python_desc, width=150)
print('\n\n' + my_wrap.fill(text = short_text))
실행 결과
Python is a general-purpose interpreted, interactive, object-oriented, and high-level programming language. It was created by Guido van Rossum during 1985- 1990. Like Perl, Python source code is also available under the GNU General Public License (GPL). This tutorial gives enough understanding on Python programming language. Python is a general-purpose interpreted, interactive, object-oriented, and high-level programming language. Python is a general-purpose interpreted, interactive, object-oriented, and high- level programming language. It was created by Guido van Rossum [...]
위 예제에서 볼 수 있듯이, wrap()은 각 줄을 리스트로 반환하고, fill()은 하나의 문자열로 합쳐서 반환하며, shorten()은 텍스트를 지정된 너비로 축약한 후 '[...]'를 붙여줍니다. 이 세 가지 메서드를 상황에 맞게 활용하면 콘솔 출력, 로그 메시지, CLI 도구 등에서 텍스트를 깔끔하게 정리할 수 있습니다.