Python-da mətn paketi ilə sətirlərin sarılması, kəsilməsi və formatlanması

Biznes

Python-da sətri ixtiyari sayda simvolda bükərək (sətir qıraraq) və kəsərək (qısaldmaqla) formatlaşdırmaq üçün standart kitabxananın mətn sarğı modulundan istifadə edin.

Aşağıdakı məlumatlar burada verilir.

  • Sətirin sarılması (xətt axını):wrap(),fill()
  • Sətirləri kəsin (çıxıb):shorten()
  • TextWrapper obyekti

Əgər çıxışda deyil, kodda bir neçə sətirdə uzun sətirlər yazmaq istəyirsinizsə, aşağıdakı məqaləyə baxın.

Sətirin sarılması (xətt axını):wrap(),fill()

Textwrap modulunun wrap() funksiyası ilə siz ixtiyari sayda simvollara sığdırmaq üçün söz fasilələrinə bölünmüş siyahı əldə edə bilərsiniz.

İkinci arqument eni üçün simvolların sayını təyin edin. Standart eni = 70-dir.

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']

Əldə edilmiş siyahıdan istifadə edərək, aşağıdakıları etməklə yeni sətir kodu ilə pozulmuş sətir əldə edə bilərsiniz
\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() funksiyası siyahı əvəzinə yeni sətir sətri qaytarır. Bu, yuxarıdakı misalda olduğu kimi wrap()-dan sonra aşağıdakı kodu yerinə yetirməklə eynidir.
\n'.join(list)

Siyahıya ehtiyacınız olmadıqda, lakin sabit enli sətri terminala çıxarmaq istədiyiniz zaman bu daha rahatdır və s.

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

Əgər arqument max_line göstərilibsə, ondan sonrakı sətirlərin sayı buraxılacaq.

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

Buraxıldıqda, aşağıdakı sətir standart olaraq sonunda çıxarılacaq.
[...]'

O, arqument tutucusu olan istənilən sətirlə əvəz edilə bilər.

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

Siz həmçinin initial_indent arqumenti ilə birinci sətrin əvvəlinə əlavə olunacaq sətri təyin edə bilərsiniz. Bu, abzasın əvvəlinə abzas qoymaq istədiyiniz zaman istifadə edilə bilər.

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 ~

Tam ölçülü və yarım ölçülü simvollarla diqqətli olun.

Mətn paketində simvolların sayı simvol eni ilə deyil, simvolların sayı ilə idarə olunur və həm tək baytlıq, həm də iki baytlıq simvollar bir simvol kimi qəbul edilir.

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

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

Sabit eni olan qarışıq kanci simvolları olan mətni bükmək istəyirsinizsə, lütfən, aşağıdakılara müraciət edin.

Sətirləri kəsin (çıxıb):shorten()

Əgər sətirləri kəsmək və buraxmaq istəyirsinizsə, textwrap modulunda shorten() funksiyasından istifadə edin.

İstənilən sayda simvol uyğunlaşdırmaq üçün söz vahidlərində qısaldılmışdır. Buraxılışı göstərən sətir daxil olmaqla simvolların sayı ixtiyaridir. Buraxılışı göstərən sətir, defolt olaraq aşağıdakılara uyğun gələn arqument yertutucusu ilə təyin edilə bilər.
[...]'

s = 'Python is powerful'

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

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

Lakin, məsələn, Yapon sətirləri sözlərə bölünə bilmədiyi üçün yaxşı ixtisar edilə bilməz.

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

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

Söz vahidləri yerinə yalnız simvolların sayını nəzərə alaraq ixtisar etmək istəyirsinizsə, bunu aşağıdakı kimi asanlıqla əldə etmək olar.

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

TextWrapper obyekti

Sabit konfiqurasiya ilə bir neçə dəfə wrap() və ya doldurmaq() etmək niyyətindəsinizsə, TextWrapper obyekti yaratmaq səmərəlidir.

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 ~

Eyni parametrlər təkrar istifadə edilə bilər.

Copied title and URL