Python-да мәтінді орау арқылы жолдарды орау, қысқарту және пішімдеу

Іскерлік

Python тіліндегі жолды таңбалардың ерікті санында орау (жолды үзу) және қысқарту (қысқарту) арқылы пішімдеу үшін стандартты кітапхананың мәтінді айналдыру модулін пайдаланыңыз.

Мұнда келесі ақпарат берілген.

  • Жолды орау (жол арнасы):wrap(),fill()
  • Жолдарды қысқарту (көрсетілмеген):shorten()
  • TextWrapper нысаны

Ұзын жолдарды шығыстың орнына кодтағы бірнеше жолға жазғыңыз келсе, келесі мақаланы қараңыз.

Жолды орау (жол арнасы):wrap(),fill()

Мәтінді айналдыру модулінің wrap() функциясы арқылы таңбалардың ерікті санына сәйкес келетін сөз үзілімдеріне бөлінген тізімді алуға болады.

Екінші аргумент ені үшін таңбалар санын көрсетіңіз. Әдепкі ені=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()

Жолдарды қысқартып, өткізіп жібергіңіз келсе, textwrap модулінде 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