임의의 문자 수로 줄바꿈(줄 바꿈) 및 자르기(약어)하여 Python에서 문자열 형식을 지정하려면 표준 라이브러리의 textwrap 모듈을 사용하십시오.
다음 정보가 여기에 제공됩니다.
- 문자열 줄 바꿈(줄 바꿈):
wrap()
,fill()
- 문자열 자르기(생략):
shorten()
- TextWrapper 객체
출력 대신 코드의 여러 줄에 긴 문자열을 작성하려면 다음 문서를 참조하세요.
문자열 줄 바꿈(줄 바꿈):wrap(),fill()
textwrap 모듈의 wrap() 함수를 사용하면 임의의 문자 수에 맞게 단어 나누기로 나눈 목록을 얻을 수 있습니다.
두 번째 인수 너비의 문자 수를 지정합니다. 기본값은 너비=70입니다.
import textwrap
s = "Python can be easy to pick up whether you're a first time programmer or you're experienced with other languages"
s_wrap_list = textwrap.wrap(s, 40)
print(s_wrap_list)
# ['Python can be easy to pick up whether', "you're a first time programmer or you're", 'experienced with other languages']
얻은 목록을 사용하여 다음을 수행하여 개행 코드로 끊어진 문자열을 얻을 수 있습니다.\n'.join(list)
print('\n'.join(s_wrap_list))
# Python can be easy to pick up whether
# you're a first time programmer or you're
# experienced with other languages
함수 fill()은 목록 대신 줄 바꿈 문자열을 반환합니다. 위의 예와 같이 wrap() 이후에 다음 코드를 실행하는 것과 같습니다.\n'.join(list)
이것은 목록이 필요하지 않지만 고정 너비 문자열을 터미널 등에 출력하려는 경우에 더 편리합니다.
print(textwrap.fill(s, 40))
# Python can be easy to pick up whether
# you're a first time programmer or you're
# experienced with other languages
인수 max_line이 지정되면 그 뒤의 행 수는 생략됩니다.
print(textwrap.wrap(s, 40, max_lines=2))
# ['Python can be easy to pick up whether', "you're a first time programmer or [...]"]
print(textwrap.fill(s, 40, max_lines=2))
# Python can be easy to pick up whether
# you're a first time programmer or [...]
생략하면 기본적으로 끝에 다음 문자열이 출력됩니다.[...]'
인수 자리 표시자가 있는 모든 문자열로 대체할 수 있습니다.
print(textwrap.fill(s, 40, max_lines=2, placeholder=' ~'))
# Python can be easy to pick up whether
# you're a first time programmer or ~
또한 initial_indent 인수를 사용하여 첫 번째 줄의 시작 부분에 추가할 문자열을 지정할 수도 있습니다. 단락의 시작 부분을 들여쓰고 싶을 때 사용할 수 있습니다.
print(textwrap.fill(s, 40, max_lines=2, placeholder=' ~', initial_indent=' '))
# Python can be easy to pick up whether
# you're a first time programmer or ~
전체 크기 및 절반 크기 문자에 주의하십시오.
textwrap에서 문자 수는 문자 너비가 아닌 문자 수로 제어되며 1바이트 및 2바이트 문자는 모두 하나의 문자로 간주됩니다.
s = '文字文字文字文字文字文字12345,67890, 文字文字文字abcde'
print(textwrap.fill(s, 12))
# 文字文字文字文字文字文字
# 12345,67890,
# 文字文字文字abcde
폭이 고정된 한자 혼합 문자로 텍스트를 줄바꿈하려면 다음을 참조하세요.
문자열 자르기(생략):shorten()
문자열을 자르고 생략하려면 textwrap 모듈에서 short() 함수를 사용하십시오.
임의의 문자 수에 맞게 단어 단위로 축약합니다. 생략을 나타내는 문자열을 포함한 문자 수는 임의입니다. 생략을 나타내는 문자열은 인수 자리 표시자로 설정할 수 있으며 기본값은 다음과 같습니다.[...]'
s = 'Python is powerful'
print(textwrap.shorten(s, 12))
# Python [...]
print(textwrap.shorten(s, 12, placeholder=' ~'))
# Python is ~
그러나 예를 들어 일본어 문자열은 단어로 나눌 수 없기 때문에 잘 축약되지 않습니다.
s = 'Pythonについて。Pythonは汎用のプログラミング言語である。'
print(textwrap.shorten(s, 20))
# [...]
단어 단위가 아닌 글자수만 고려하여 축약하고자 한다면 다음과 같이 쉽게 구할 수 있습니다.
s_short = s[:12] + '...'
print(s_short)
# Pythonについて。P...
TextWrapper 객체
고정 구성으로 wrap() 또는 fill()을 여러 번 수행하려는 경우 TextWrapper 객체를 만드는 것이 효율적입니다.
wrapper = textwrap.TextWrapper(width=30, max_lines=3, placeholder=' ~', initial_indent=' ')
s = "Python can be easy to pick up whether you're a first time programmer or you're experienced with other languages"
print(wrapper.wrap(s))
# [' Python can be easy to pick', "up whether you're a first time", "programmer or you're ~"]
print(wrapper.fill(s))
# Python can be easy to pick
# up whether you're a first time
# programmer or you're ~
동일한 설정을 재사용할 수 있습니다.