Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 textwrap 모듈 완벽 가이드: 텍스트 줄바꿈과 채우기

파이썬에서는 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 도구 등에서 텍스트를 깔끔하게 정리할 수 있습니다.