Python တွင် စာကြောင်းတစ်ကြောင်းကို စီစဥ်ခြင်း (လိုင်းဖြတ်တောက်ခြင်း) နှင့် ၎င်းကို စာလုံးအရေအတွက်တစ်ခုမဟုတ်တစ်ခုဖြင့် ဖြတ်တောက်ခြင်း (အတိုကောက်) ဖြင့် ဖော်မတ်လုပ်ရန်၊ စံဒစ်ဂျစ်တိုက်၏ textwrap module ကို အသုံးပြုပါ။
အောက်ပါအချက်အလက်များကို ဤနေရာတွင် ဖော်ပြပေးထားပါသည်။
- စာကြောင်းတစ်ကြောင်းကို ထုပ်ခြင်း (စာကြောင်းဖိဒ်):
wrap()
၊fill()
- စာကြောင်းများကို ဖြတ်ထုတ်ပါ (ချန်လှပ်ထားသည်):
shorten()
- TextWrapper အရာဝတ္ထု
ကုဒ်အထွက်တွင်အစား စာကြောင်းများစွာတွင် စာကြောင်းရှည်များရေးလိုပါက အောက်ပါဆောင်းပါးကိုကြည့်ပါ။
- ဆက်စပ်ဆောင်းပါးများ-Python ရှိ စာကြောင်းများစွာတွင် ရှည်လျားသော စာကြောင်းများကို ရေးသားခြင်း။
စာကြောင်းတစ်ကြောင်းကို ထုပ်ခြင်း (စာကြောင်းဖိဒ်):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 ~
တူညီသောဆက်တင်များကို ပြန်လည်အသုံးပြုနိုင်ပါသည်။