Да бисте форматирали стринг у Питхон-у преламањем (прекидањем реда) и скраћивањем (скраћеним) на произвољан број знакова, користите модул премотавања текста стандардне библиотеке.
Овде се налазе следеће информације.
- Премотавање низа (феед лине):
wrap()
,fill()
- Скратите низове (изостављено):
shorten()
- ТектВраппер објекат
Ако желите да напишете дугачке низове у више редова у коду уместо у излазу, погледајте следећи чланак.
- Повезани чланци:Писање дугих низова текста у више редова у Питхон-у
Премотавање низа (феед лине):wrap(),fill()
Са функцијом врап() модула тектврап, можете добити листу подељену преломима речи како би се уклопила у произвољан број знакова.
Одредите број знакова за ширину другог аргумента. Подразумевано је ширина=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
Функција филл() враћа стринг новог реда уместо листе. То је исто као и извршавање следећег кода након врап() као у горњем примеру.\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
Ако је наведен аргумент мак_лине, број редова после њега ће бити изостављен.
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 ~
Такође можете одредити стринг који ће бити додат на почетак првог реда са аргументом почетни_индент. Ово се може користити када желите да увучете почетак пасуса.
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 ~
Будите опрезни са ликовима у пуној и половичној величини.
У преламању текста, број знакова се контролише бројем знакова, а не ширином карактера, а и једнобајтни и двобајтни карактери се сматрају једним карактером.
s = '文字文字文字文字文字文字12345,67890, 文字文字文字abcde'
print(textwrap.fill(s, 12))
# 文字文字文字文字文字文字
# 12345,67890,
# 文字文字文字abcde
Ако желите да умотате текст са мешовитим кањи знаковима са фиксном ширином, погледајте следеће.
Скратите низове (изостављено):shorten()
Ако желите да скрате и изоставите низове, користите функцију схортен() у модулу за преламање текста.
Скраћено у јединицама речи како би одговарало произвољном броју знакова. Број знакова, укључујући стринг који указује на изостављање, је произвољан. Стринг који указује на изостављање може се подесити помоћу чувара места аргумента, који је подразумевано подешен на следеће.[...]'
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...
ТектВраппер објекат
Ако ћете врап() или филл() много пута са фиксном конфигурацијом, ефикасно је креирати ТектВраппер објекат.
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 ~
Иста подешавања се могу поново користити.