Python တွင် textwrap ဖြင့် Wrapping၊ ဖြတ်တောက်ခြင်းနှင့် ဖော်မတ်ချခြင်း

စီးပွားရေးလုပ်ငန်း

Python တွင် စာကြောင်းတစ်ကြောင်းကို စီစဥ်ခြင်း (လိုင်းဖြတ်တောက်ခြင်း) နှင့် ၎င်းကို စာလုံးအရေအတွက်တစ်ခုမဟုတ်တစ်ခုဖြင့် ဖြတ်တောက်ခြင်း (အတိုကောက်) ဖြင့် ဖော်မတ်လုပ်ရန်၊ စံဒစ်ဂျစ်တိုက်၏ textwrap module ကို အသုံးပြုပါ။

အောက်ပါအချက်အလက်များကို ဤနေရာတွင် ဖော်ပြပေးထားပါသည်။

  • စာကြောင်းတစ်ကြောင်းကို ထုပ်ခြင်း (စာကြောင်းဖိဒ်):wrap()fill()
  • စာကြောင်းများကို ဖြတ်ထုတ်ပါ (ချန်လှပ်ထားသည်):shorten()
  • TextWrapper အရာဝတ္ထု

ကုဒ်အထွက်တွင်အစား စာကြောင်းများစွာတွင် စာကြောင်းရှည်များရေးလိုပါက အောက်ပါဆောင်းပါးကိုကြည့်ပါ။

စာကြောင်းတစ်ကြောင်းကို ထုပ်ခြင်း (စာကြောင်းဖိဒ်):wrap()၊fill()

textwrap module ၏ function wrap() ဖြင့်၊ သင်သည် စာလုံးအရေအတါင်းနှင့် ကိုက်ညီရန် စကားလုံးကွဲများဖြင့် ပိုင်းခြားထားသော စာရင်းတစ်ခုကို သင်ရနိုင်သည်။

ဒုတိယအငြင်းအခုံအကျယ်အတွက် စာလုံးအရေအတွက်ကို သတ်မှတ်ပါ။ မူရင်းမှာ width=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

function fill() သည် စာရင်းတစ်ခုအစား လိုင်းအသစ်တစ်ခုကို ပြန်ပေးသည်။ အပေါ်က ဥပမာမှာအတိုင်း wrap() ပြီးနောက် အောက်ပါကုဒ်ကို လုပ်ဆောင်တာနဲ့ အတူတူပါပဲ။
\n'.join(list)

စာရင်းတစ်ခုမလိုအပ်သော်လည်း သတ်မှတ်ထားသော အကျယ်စာကြောင်းကို terminal တစ်ခုသို့ စသည်တို့ကို ထုတ်ထုတ်လိုသည့်အခါ ၎င်းသည် ပိုအဆင်ပြေပါသည်။

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

ချန်လှပ်ထားပါက၊ ပုံသေအားဖြင့် အောက်ပါစာကြောင်းသည် အဆုံးတွင် ထွက်ပါမည်။
[...]'

၎င်းကို argument placeholder ဖြင့် မည်သည့် string ဖြင့် အစားထိုးနိုင်ပါသည်။

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

argument 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 ~

full-size နှင့် half-size စာလုံးများကို သတိထားပါ။

Textwrap တွင်၊ စာလုံးအရေအတွက်ကို အက္ခရာအကျယ်အားဖြင့်မဟုတ်ဘဲ စာလုံးအရေအတွက်ဖြင့် ထိန်းချုပ်ထားပြီး single-byte နှင့် double-byte စာလုံးများကို စာလုံးတစ်လုံးအဖြစ် သတ်မှတ်သည်။

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

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

ပုံသေအကျယ်ဖြင့် ကာဂျိအက္ခရာ ရောစပ်ထားသော စာသားကို ခြုံလိုပါက၊ အောက်ပါတို့ကို ကိုးကားပါ။

စာကြောင်းများကို ဖြတ်ထုတ်ပါ (ချန်လှပ်ထားသည်):shorten()

စာကြောင်းများကို ဖြတ်တောက်ပြီး ချန်လှပ်လိုပါက၊ textwrap module တွင် 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 ~

တူညီသောဆက်တင်များကို ပြန်လည်အသုံးပြုနိုင်ပါသည်။