Python တွင် စာကြောင်းများ ပေါင်းစပ်ခြင်းနှင့် ချိတ်ဆက်ခြင်း- + အော်ပရေတာများ၊ ချိတ်ဆက်လုပ်ဆောင်မှုများ စသည်ဖြင့်။

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

အောက်ပါတို့သည် Python တွင် string str ကို ပေါင်းစည်းပုံနှင့် ချိတ်ဆက်နည်း၏ ဖော်ပြချက်ဖြစ်သည်။

  • ကြိုးမျိုးစုံကို ပေါင်းစပ်ပြီး ပေါင်းစည်းခြင်း။:++=အော်ပရေတာ
  • နံပါတ်များနှင့် စာကြောင်းများကို ပေါင်းစပ်ပြီး ပေါင်းစပ်ပါ။:++=အော်ပရေတာ,str()format()f-string
  • strings များ၏ lists (arrays) များကို ပေါင်းစပ်ပြီး string တစ်ခုထဲသို့ ပေါင်းစပ်ပါ။:join()
  • ဂဏန်းများစာရင်းများ (အခင်းအကျင်းများ) ကို ပေါင်းစည်းပြီး စာကြောင်းတစ်ခုတည်းသို့ ပေါင်းစပ်ပါ။:join()str()

ကြိုးမျိုးစုံကို ပေါင်းစပ်ပြီး ပေါင်းစည်းခြင်း။:+၊+=အော်ပရေတာ

ချိတ်ဆက်မှု:+အော်ပရေတာ

အောက်ပါ string literals များနှင့် string variable များကို ပေါင်းစပ်ရန် ++ operator ကို သုံးနိုင်သည်။

  • …’
  • “ …”
s = 'aaa' + 'bbb' + 'ccc'
print(s)
# aaabbbccc

s1 = 'aaa'
s2 = 'bbb'
s3 = 'ccc'

s = s1 + s2 + s3
print(s)
# aaabbbccc

s = s1 + s2 + s3 + 'ddd'
print(s)
# aaabbbcccddd

ချိတ်ဆက်မှု:+=အော်ပရေတာ

+= အော်ပရေတာ၊ စုစည်းသတ်မှတ်ပေးထားသော အော်ပရေတာကိုလည်း သုံးနိုင်သည်။ ဘယ်ဘက်ခြမ်းရှိ string variable ကို ညာဖက်ခြမ်းရှိ string နှင့် ပေါင်းစပ်ထားပြီး၊ သတ်မှတ်ပေးပြီး အပ်ဒိတ်လုပ်ထားသည်။

s1 += s2
print(s1)
# aaabbb

string variable ၏အဆုံးတွင် string တစ်ခုထည့်လိုပါက၊ string variable နှင့် string literal (သို့မဟုတ် အခြားသော string variable) ကို += operator ဖြင့် လုပ်ဆောင်ပါ။

s = 'aaa'

s += 'xxx'
print(s)
# aaaxxx

စာကြောင်းအက္ခရာများ၏ ဆက်တိုက်ပေါင်းစပ်ခြင်း။

အကယ်၍ သင်သည် စာကြောင်းစာကြောင်းများကို ဘေးချင်းကပ်၍ ရိုးရိုးရှင်းရှင်းရေးပါက၊ စာကြောင်းများကို ပေါင်းစပ်သွားပါမည်။

s = 'aaa''bbb''ccc'
print(s)
# aaabbbccc

မျဉ်းနှစ်ခုကြားတွင် နေရာလွတ်တစ်ခု သို့မဟုတ် backslash လိုင်းချိုးခြင်း (အဆက်ပြတ်ခြင်းဟု ယူဆသည်)။

s = 'aaa'  'bbb'    'ccc'
print(s)
# aaabbbccc

s = 'aaa'\
    'bbb'\
    'ccc'
print(s)
# aaabbbccc

ကုဒ်ရှိ စာကြောင်းများစွာတွင် ရှည်လျားသောစာကြောင်းများရေးရန် ၎င်းကိုအသုံးပြုရန် နည်းလမ်းတစ်ခုရှိသည်။

ဤစာရေးနည်းသည် string variable များအတွက် မဖြစ်နိုင်ပါ။

# s = s1 s2 s3
# SyntaxError: invalid syntax

ကိန်းဂဏာန်းနှင့် စာကြောင်းပေါင်းစပ်ခြင်း/ဆက်စပ်မှု:+၊+=အော်ပရေတာ,str()၊format()၊f-string

မတူညီသောအမျိုးအစားတစ်ခု၏ A+ လုပ်ဆောင်ချက်သည် အမှားအယွင်းဖြစ်သွားသည်။

s1 = 'aaa'
s2 = 'bbb'

i = 100
f = 0.25

# s = s1 + i
# TypeError: must be str, not int

ကိန်းဂဏာန်းတန်ဖိုး (ဥပမာ၊ ကိန်းပြည့်အမျိုးအစား int သို့မဟုတ် ရေပေါ်အမှတ် အမျိုးအစား float) ကို စာကြောင်းတစ်ခုဖြင့် ပေါင်းစပ်လိုပါက၊ ဂဏန်းတန်ဖိုးကို str() ဖြင့် string အမျိုးအစားသို့ ပြောင်းပြီး ၎င်းတို့ကို +အော်ပရေတာ (သို့မဟုတ် += အော်ပရေတာနှင့် ပေါင်းစပ်ပါ။ )

s = s1 + '_' + str(i) + '_' + s2 + '_' + str(f)
print(s)
# aaa_100_bbb_0.25

သုညဖြည့်ခြင်း သို့မဟုတ် ဒဿမနေရာများကဲ့သို့ နံပါတ်တစ်ခု၏ဖော်မတ်ကို ပြောင်းလိုပါက ဖော်မတ်() လုပ်ဆောင်ချက် သို့မဟုတ် string method ဖော်မတ်() ကို အသုံးပြုပါ။

s = s1 + '_' + format(i, '05') + '_' + s2 + '_' + format(f, '.5f')
print(s)
# aaa_00100_bbb_0.25000

s = '{}_{:05}_{}_{:.5f}'.format(s1, i, s2, f)
print(s)
# aaa_00100_bbb_0.25000

ဟုတ်ပါတယ်၊ ဖော်မတ်ချခြင်းမပြုဘဲ စာကြောင်းတစ်ခုတွင် ကိန်းရှင်၏တန်ဖိုးကိုလည်း ထည့်သွင်းနိုင်သည်။ +အော်ပရေတာသုံးတာထက်စာရတာပိုလွယ်တယ်။

s = '{}_{}_{}_{}'.format(s1, i, s2, f)
print(s)
# aaa_100_bbb_0.25

ဖော်မတ်သတ်မှတ်နည်းအသေးစိတ်အတွက် အောက်ပါဆောင်းပါးကို ကြည့်ပါ။

Python 3.6 မှစပြီး f-strings (f-string) ဟုခေါ်သော ယန္တရားကိုလည်း ဖော်မတ်ရေးသားခြင်းထက်ပင် ပိုမိုလွယ်ကူသည့် ယန္တရားတစ်ခုကိုလည်း မိတ်ဆက်ပေးခဲ့သည်။

s = f'{s1}_{i:05}_{s2}_{f:.5f}'
print(s)
# aaa_00100_bbb_0.25000

s = f'{s1}_{i}_{s2}_{f}'
print(s)
# aaa_100_bbb_0.25

စာကြောင်းများ၏စာရင်းများ (အခင်းအကျင်းများ) ကိုပေါင်းစပ်ပြီးပူးပေါင်းပါ။:join()

string method join() ကို string များစာရင်းကို string တစ်ခုထဲသို့ ပေါင်းစပ်ရန် အသုံးပြုနိုင်သည်။

ဘယ်လိုရေးရမလဲဆိုတာကတော့ အောက်ပါအတိုင်းဖြစ်ပါတယ်။

'String to be inserted between'.join([List of strings to be concatenated])

အငြင်းအခုံအဖြစ် ‘ကြားထဲထည့်ရန် string’ ပါရှိသော join() method ကိုခေါ်ဆိုပြီး [ပေါင်းစပ်ရန် strings စာရင်း] ကိုဖြတ်ပါ။

အချည်းနှီးသောစာကြောင်းကိုအသုံးပြုပါက၊ [ပေါင်းစပ်ရမည့်စာကြောင်းများစာရင်း] ကိုရိုးရှင်းစွာပေါင်းစပ်ထားမည်ဖြစ်ပြီး၊ ကော်မာတစ်ခုကိုအသုံးပြုပါက၊ စာကြောင်းများကိုကော်မာ-ခွဲထားမည်ဖြစ်ပြီး၊ စာလုံးအသစ်တစ်ခုကိုအသုံးပြုပါက၊ စာကြောင်းအစိတ်အပိုင်းတစ်ခုစီကို အသစ်ရေးပါမည်။

l = ['aaa', 'bbb', 'ccc']

s = ''.join(l)
print(s)
# aaabbbccc

s = ','.join(l)
print(s)
# aaa,bbb,ccc

s = '-'.join(l)
print(s)
# aaa-bbb-ccc

s = '\n'.join(l)
print(s)
# aaa
# bbb
# ccc

ဤနေရာတွင် စာရင်းတစ်ခု၏ ဥပမာတစ်ခုသာ ပေးသော်လည်း၊ tuples ကဲ့သို့သော အခြားသော ထပ်၍မရနိုင်သော အရာဝတ္ထုများကို join() အဖြစ်လည်း သတ်မှတ်နိုင်ပါသည်။

Join() နှင့် ဆန့်ကျင်ဘက်အားဖြင့် split() ကို သီးခြားခွဲခြမ်းစိတ်ဖြာသော မျဉ်းကြောင်းတစ်ခုအား ပိုင်းခြားပြီး စာရင်းတစ်ခုအနေဖြင့် ရယူရန် အသုံးပြုသည်။

ဂဏန်းများစာရင်းများ (အခင်းအကျင်းများ) ကို မျဉ်းကြောင်းများအဖြစ် ပေါင်းစပ်ပြီး ပေါင်းစပ်ပါ။:join()၊str()

join() သည် string များမဟုတ်သော element များစာရင်းတစ်ခုဖြစ်ပါက error ဖြစ်ပေါ်ပါသည်။

l = [0, 1, 2]

# s = '-'.join(l)
# TypeError: sequence item 0: expected str instance, int found

နံပါတ်များစာရင်းကို စာကြောင်းတစ်ခုတည်းသို့ ပေါင်းစပ်ရန်၊ နံပါတ်များကို စာကြောင်းတစ်ခုအဖြစ်သို့ ပြောင်းရန် str() လုပ်ဆောင်ချက်ကို စာရင်းနားလည်သဘောပေါက်သည့်အမှတ်အသားတစ်ခုစီတွင် အသုံးပြုပါ၊ ထို့နောက် ၎င်းတို့ကို join() ဖြင့် ချိတ်ဆက်ပါ။

s = '-'.join([str(n) for n in l])
print(s)
# 0-1-2

၎င်းကို generator expression အဖြစ်လည်း ရေးသားနိုင်ပြီး၊ ၎င်းသည် list comprehensions ၏ generator version တစ်ခုဖြစ်သည်။ ဂျင်နရေတာအသုံးအနှုန်းများကို ကွင်းစဥ်များတွင် ထည့်သွင်းထားသော်လည်း generator expression သည် function သို့မဟုတ် method အတွက် တစ်ခုတည်းသော argument ဖြစ်ပါက ကွင်းစဥ်များကို ချန်လှပ်နိုင်ပါသည်။

s = '-'.join((str(n) for n in l))
print(s)
# 0-1-2

s = '-'.join(str(n) for n in l)
print(s)
# 0-1-2

Generator expression များသည် ယေဘူယျအားဖြင့် list comprehension များထက် memory နည်းသော အသုံးပြုခြင်း၏ အားသာချက်များ ရှိသော်လည်း Join() မှ generator များကို ၎င်း၏ internal processing တွင် lists အဖြစ်သို့ ပြောင်းပေးသောကြောင့် generator expressions များကို အသုံးပြုခြင်းအတွက် သီးခြားအားသာချက်မရှိပါ။ တကယ်တော့၊ အစကတည်းက စာရင်းနားလည်မှုကို သုံးရတာ နည်းနည်းမြန်တယ်။

စာရင်းနားလည်နိုင်မှုနှင့် မီးစက်အသုံးအနှုန်းများဆိုင်ရာ နောက်ထပ်အချက်အလက်များအတွက်၊ အောက်ပါဆောင်းပါးကို ကြည့်ပါ။

Copied title and URL