Mbështjellja, shkurtimi dhe formatimi i vargjeve në Python me tekstwrap

biznes

Për të formatuar një varg në Python duke e mbështjellë (ndërprerjen e linjës) dhe duke e shkurtuar (shkurtuar) atë në një numër arbitrar karakteresh, përdorni modulin textwrap të bibliotekës standarde.

Informacioni i mëposhtëm jepet këtu.

  • Mbështjellja e një vargu (ushqimi i linjës):wrap(),fill()
  • Prerja e vargjeve (të hequra):shorten()
  • Objekti TextWrapper

Nëse dëshironi të shkruani vargje të gjata në shumë rreshta në kod në vend të daljes, shihni artikullin vijues.

Mbështjellja e një vargu (ushqimi i linjës):wrap(),fill()

Me funksionin wrap() të modulit textwrap, mund të merrni një listë të ndarë me ndarje fjalësh për t’u përshtatur në një numër arbitrar karakteresh.

Specifikoni numrin e karaktereve për gjerësinë e argumentit të dytë. Parazgjedhja është gjerësia=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']

Duke përdorur listën e marrë, mund të merrni një varg që prishet nga një kod i linjës së re duke bërë sa më poshtë
\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

Funksioni fill() kthen një varg të linjës së re në vend të një liste. Është njësoj si ekzekutimi i kodit të mëposhtëm pas wrap() si në shembullin e mësipërm.
\n'.join(list)

Kjo është më e përshtatshme kur nuk ju nevojitet një listë, por dëshironi të nxirrni një varg me gjerësi fikse në një terminal, etj.

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

Nëse argumenti max_line është specifikuar, numri i rreshtave pas tij do të hiqet.

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 [...]

Nëse hiqet, vargu i mëposhtëm do të dalë në fund si parazgjedhje.
[...]'

Mund të zëvendësohet nga çdo varg me mbajtësin e argumentit.

print(textwrap.fill(s, 40, max_lines=2, placeholder=' ~'))
# Python can be easy to pick up whether
# you're a first time programmer or ~

Ju gjithashtu mund të specifikoni një varg që do të shtohet në fillim të rreshtit të parë me argumentin fillestar_indent. Kjo mund të përdoret kur dëshironi të bëni dhëmbëzim në fillim të një paragrafi.

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 ~

Jini të kujdesshëm me personazhet me madhësi të plotë dhe gjysmë të përmasave.

Në textwrap, numri i karaktereve kontrollohet nga numri i karaktereve, jo nga gjerësia e karaktereve, dhe karakteret me një bajt dhe dy bajt konsiderohen si një karakter.

s = '文字文字文字文字文字文字12345,67890, 文字文字文字abcde'

print(textwrap.fill(s, 12))
# 文字文字文字文字文字文字
# 12345,67890,
# 文字文字文字abcde

Nëse dëshironi të mbështillni një tekst me karaktere të përziera kanji me një gjerësi fikse, ju lutemi referojuni sa vijon.

Prerja e vargjeve (të hequra):shorten()

Nëse dëshironi të shkurtoni dhe të hiqni vargjet, përdorni funksionin shorten() në modulin textwrap.

Shkurtuar në njësi fjalësh për të përshtatur një numër arbitrar karakteresh. Numri i karaktereve, duke përfshirë vargun që tregon lëshimin, është arbitrar. Vargu që tregon lëshimin mund të vendoset me mbajtësin e argumentit, i cili parazgjedh si më poshtë.
[...]'

s = 'Python is powerful'

print(textwrap.shorten(s, 12))
# Python [...]

print(textwrap.shorten(s, 12, placeholder=' ~'))
# Python is ~

Sidoqoftë, vargjet japoneze, për shembull, nuk mund të shkurtohen mirë, sepse ato nuk mund të ndahen në fjalë.

s = 'Pythonについて。Pythonは汎用のプログラミング言語である。'

print(textwrap.shorten(s, 20))
# [...]

Nëse dëshironi të shkurtoni duke marrë parasysh vetëm numrin e karaktereve në vend të njësive fjalësh, mund të arrihet lehtësisht si më poshtë.

s_short = s[:12] + '...'
print(s_short)
# Pythonについて。P...

Objekti TextWrapper

Nëse do të mbështillni() ose fill() shumë herë me një konfigurim fiks, është efikase të krijoni një objekt 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 ~

Të njëjtat cilësime mund të ripërdoren.

Copied title and URL