Каб адфарматаваць радок у Python шляхам абгортвання (разрыву радка) і абрэзкі (скарачэння) яго на адвольную колькасць сімвалаў, выкарыстоўвайце модуль тэкставага пераносу стандартнай бібліятэкі.
Тут прадстаўлена наступная інфармацыя.
- Абгортванне радка (перавод радка):
wrap()
,fill()
- Абрэзаць радкі (апушчаны):
shorten()
- Аб’ект TextWrapper
Калі вы хочаце напісаць доўгія радкі на некалькіх радках у кодзе, а не ў вывадзе, глядзіце наступны артыкул.
- Падобныя артыкулы:Напісанне доўгіх радкоў тэксту ў некалькі радкоў у Python
Абгортванне радка (перавод радка):wrap(),fill()
З дапамогай функцыі wrap() модуля textwrap вы можаце атрымаць спіс, падзелены разрывамі слоў, каб змясціцца ў адвольную колькасць сімвалаў.
Пакажыце колькасць сімвалаў для шырыні другога аргумента. Па змаўчанні шырыня = 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 ~
Будзьце ўважлівыя з персанажамі поўнага і паўразмернага памеру.
У пераносе тэксту колькасць сімвалаў кантралюецца колькасцю сімвалаў, а не шырынёй сімвала, і як аднабайтавыя, так і двухбайтавыя сімвалы разглядаюцца як адзін сімвал.
s = '文字文字文字文字文字文字12345,67890, 文字文字文字abcde'
print(textwrap.fill(s, 12))
# 文字文字文字文字文字文字
# 12345,67890,
# 文字文字文字abcde
Калі вы хочаце абгарнуць тэкст з змешанымі сімваламі кандзі з фіксаванай шырынёй, звярніцеся да наступнага.
Абрэзаць радкі (апушчаны):shorten()
Калі вы хочаце абрэзаць і апусціць радкі, выкарыстоўвайце функцыю 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...
Аб’ект 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 ~
Тыя ж налады можна выкарыстоўваць паўторна.