Абгортванне, абразанне і фарматаванне радкоў у Python з пераносам тэксту

Бізнэс

Каб адфарматаваць радок у Python шляхам абгортвання (разрыву радка) і абрэзкі (скарачэння) яго на адвольную колькасць сімвалаў, выкарыстоўвайце модуль тэкставага пераносу стандартнай бібліятэкі.

Тут прадстаўлена наступная інфармацыя.

  • Абгортванне радка (перавод радка):wrap(),fill()
  • Абрэзаць радкі (апушчаны):shorten()
  • Аб’ект TextWrapper

Калі вы хочаце напісаць доўгія радкі на некалькіх радках у кодзе, а не ў вывадзе, глядзіце наступны артыкул.

Абгортванне радка (перавод радка):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 ~

Тыя ж налады можна выкарыстоўваць паўторна.

Copied title and URL