Python သည် string type သည် ဂဏန်း သို့မဟုတ် အက္ခရာဖြင့် ဟုတ်မဟုတ် ဆုံးဖြတ်ရန်နှင့် စစ်ဆေးရန် string method အများအပြားကို ပံ့ပိုးပေးပါသည်။
နည်းလမ်းတစ်ခုစီကို နမူနာကုဒ်ဖြင့် ရှင်းပြထားသည်။
- စာကြောင်းတစ်ကြောင်းသည် ဒဿမဂဏန်းဖြစ်မဖြစ် ဆုံးဖြတ်သည်။:
str.isdecimal()
- စာကြောင်းတစ်ကြောင်းသည် နံပါတ်ဟုတ်၊ မဟုတ် ဆုံးဖြတ်ခြင်း။:
str.isdigit()
- စာကြောင်းတစ်ကြောင်းသည် နံပါတ်တစ်ခုကို ကိုယ်စားပြုသည့် စာလုံးတစ်ခု ဟုတ်မဟုတ် ဆုံးဖြတ်သည်။:
str.isnumeric()
- စာကြောင်းသည် အက္ခရာစဉ်ဖြစ်မဖြစ် ဆုံးဖြတ်သည်။:
str.isalpha()
- စာကြောင်းသည် အက္ခရာဂဏန်းမဟုတ်ဟု ဆုံးဖြတ်ပါ။:
str.isalnum()
- စာကြောင်းများသည် ASCII စာလုံးများ ဟုတ်မဟုတ် ဆုံးဖြတ်သည်။:
str.isascii()
- ညာဘက်လက်အလွတ် စီရင်ချက်
- စာကြောင်းများကို နံပါတ်များအဖြစ်သို့ ပြောင်းနိုင်မလား။
isascii() မှလွဲ၍ အခြားနည်းလမ်းများအတွက် ဗလာစာကြောင်းတစ်ခုပါရှိသော စာကြောင်းတစ်ခု၊ အောက်ပါသင်္ကေတများ စသည်တို့သည် မှားယွင်းပါသည်။
,
.
-
-1.23 စသည်တို့ကို ဂဏန်းတန်ဖိုးအဖြစ် ဤအပိုင်း၏အဆုံးတွင် ရှင်းပြထားသည်။
ပုံမှန်အသုံးအနှုန်းများကို အက္ခရာအမျိုးအစားများကို ပိုမိုလိုက်လျောညီထွေစွာ ဆုံးဖြတ်ရန်နှင့် သက်ဆိုင်ရာ ဇာတ်ကောင်အမျိုးအစားများကို ထုတ်ယူရန် အသုံးပြုနိုင်သည်။
အောက်ပါတို့ကို ဆုံးဖြတ်နည်းဆိုင်ရာ နောက်ထပ်အချက်အလက်များအတွက် အောက်ပါဆောင်းပါးကို ကြည့်ပါ။
- ကိန်းဂဏာန်းစာကြောင်း (str) ကို နံပါတ် (int၊ float) သို့ မည်သို့ပြောင်းရမည်နည်း။
- အထက်နဲ့ အောက်ကို ဘယ်လိုဆုံးဖြတ်မလဲ။
- ဆက်စပ်-Python ရှိ ကိန်းဂဏာန်းတန်ဖိုးများသို့ ဂဏန်းစာတန်းတစ်ခုသို့ ပြောင်းခြင်း။
- ဆက်စပ်-Python တွင် ဖြစ်ရပ်ကို ကိုင်တွယ်ရန် စာကြောင်းနည်းလမ်းများ စာရင်း
- စာကြောင်းတစ်ကြောင်းသည် ဒဿမဂဏန်းဖြစ်မဖြစ် ဆုံးဖြတ်သည်။:str.isdecimal()
- စာကြောင်းတစ်ကြောင်းသည် နံပါတ်ဟုတ်၊ မဟုတ် ဆုံးဖြတ်ခြင်း။:str.isdigit()
- စာကြောင်းတစ်ကြောင်းသည် နံပါတ်တစ်ခုကို ကိုယ်စားပြုသည့် စာလုံးတစ်ခု ဟုတ်မဟုတ် ဆုံးဖြတ်သည်။:str.isnumeric()
- စာကြောင်းသည် အက္ခရာစဉ်ဖြစ်မဖြစ် ဆုံးဖြတ်သည်။:str.isalpha()
- စာကြောင်းသည် အက္ခရာဂဏန်းမဟုတ်ဟု ဆုံးဖြတ်ပါ။:str.isalnum()
- စာကြောင်းများသည် ASCII စာလုံးများ ဟုတ်မဟုတ် ဆုံးဖြတ်သည်။:str.isascii()
- ညာဘက်လက်အလွတ် စီရင်ချက်
- စာကြောင်းများကို နံပါတ်များအဖြစ်သို့ ပြောင်းနိုင်မလား။
စာကြောင်းတစ်ကြောင်းသည် ဒဿမဂဏန်းဖြစ်မဖြစ် ဆုံးဖြတ်သည်။:str.isdecimal()
isdecimal() တွင် စာလုံးအားလုံးသည် ဒဿမဂဏန်းများဖြစ်သည်၊ ဆိုလိုသည်မှာ ယူနီကုဒ်၏ အထွေထွေအမျိုးအစား Nd မှ စာလုံးများသည် မှန်ပါသည်။ အကျယ်အဝန်းအပြည့်ရှိသော အာရဗီဂဏန်းများ စသည်တို့အတွက်လည်း မှန်ပါသည်။
s = '1234567890'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = 1234567890
# isdecimal: True
# isdigit: True
# isnumeric: True
s = '1234567890'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = 1234567890
# isdecimal: True
# isdigit: True
# isnumeric: True
အနုတ်လက္ခဏာ သို့မဟုတ် ကာလတစ်ခုကဲ့သို့သော သင်္ကေတတစ်ခုပါရှိလျှင် ၎င်းသည် မှားယွင်းပါသည်။ ဥပမာအားဖြင့်၊ ‘-1.23’ ကဲ့သို့သော စာကြောင်းတစ်ကြောင်းသည် ကိန်းဂဏာန်းတန်ဖိုးဖြစ်ကြောင်း သင်ဆုံးဖြတ်လိုပါက ခြွင်းချက် ကိုင်တွယ်မှုကို သင်အသုံးပြုနိုင်သည်။ ဒီအပိုင်းကို အဆုံးမှာ ရှင်းပြထားပါတယ်။
s = '-1.23'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = -1.23
# isdecimal: False
# isdigit: False
# isnumeric: False
စာကြောင်းတစ်ကြောင်းသည် နံပါတ်ဟုတ်၊ မဟုတ် ဆုံးဖြတ်ခြင်း။:str.isdigit()
isdigit() တွင် isdecimal() တွင် အမှန်ဖြစ်သော ဂဏန်းများအပြင် Unicode ပိုင်ဆိုင်မှုတန်ဖိုး Numeric_Type သည် Digit သို့မဟုတ် Decimal ဖြစ်သည့် ဂဏန်းများလည်း မှန်ကန်ပါသည်။
ဥပမာအားဖြင့်၊ စတုရန်းတစ်ခုကို ကိုယ်စားပြုသည့် စာလုံးကြီးနံပါတ်သည် isdecimal() တွင် မှားယွင်းသော်လည်း isdigit() တွင် မှန်ပါသည်။
- စတုရန်းကိုကိုယ်စားပြုသော စာလုံးကြီးနံပါတ်
- ²
- \u00B2}’
s = '10\u00B2'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = 10²
# isdecimal: False
# isdigit: True
# isnumeric: True
စာကြောင်းတစ်ကြောင်းသည် နံပါတ်တစ်ခုကို ကိုယ်စားပြုသည့် စာလုံးတစ်ခု ဟုတ်မဟုတ် ဆုံးဖြတ်သည်။:str.isnumeric()
isnumeric() တွင် isdigit() တွင် မှန်ကန်သော နံပါတ်များအပြင် ယူနီကုဒ်ပိုင်ဆိုင်မှုတန်ဖိုး Numeric_Type သည် ကိန်းဂဏာန်းများ လည်း မှန်ကန်ပါသည်။
အပိုင်းအစများ၊ ရောမဂဏန်းများနှင့် တရုတ်ဂဏန်းများသည်လည်း မှန်ပါသည်။
s = '\u00BD'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = ½
# isdecimal: False
# isdigit: False
# isnumeric: True
s = '\u2166'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = Ⅶ
# isdecimal: False
# isdigit: False
# isnumeric: True
s = '一二三四五六七八九〇'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = 一二三四五六七八九〇
# isdecimal: False
# isdigit: False
# isnumeric: True
s = '壱億参阡萬'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = 壱億参阡萬
# isdecimal: False
# isdigit: False
# isnumeric: True
စာကြောင်းသည် အက္ခရာစဉ်ဖြစ်မဖြစ် ဆုံးဖြတ်သည်။:str.isalpha()
isalpha() တွင် အောက်ဖော်ပြပါများထဲမှ တစ်ခုပါရှိသော ယူနီကုဒ် အထွေထွေ အမျိုးအစား ပိုင်ဆိုင်မှုသည် မှန်ပါသည်။
Lm
Lt
Lu
Ll
Lo
အက္ခရာ ၊တရုတ်အက္ခရာ စသည်တို့သည် မှန်ပေလိမ့်မည်။
s = 'abc'
print('s =', s)
print('isalpha:', s.isalpha())
# s = abc
# isalpha: True
s = '漢字'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 漢字
# isalpha: True
အာရဗီဂဏန်းများသည် မှားယွင်းသော်လည်း တရုတ်ဂဏန်းများသည် တရုတ်စာလုံးများဖြစ်သောကြောင့် မှန်ကန်ပါသည်။ သို့သော် တရုတ်ဂဏန်းများတွင် သုညသည် မှားသည်။
s = '1234567890'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 1234567890
# isalpha: False
s = '1234567890'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 1234567890
# isalpha: False
s = '一二三四五六七八九'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 一二三四五六七八九
# isalpha: True
s = '壱億参阡萬'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 壱億参阡萬
# isalpha: True
s = '〇'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 〇
# isalpha: False
ရောမဂဏန်းများသည် မှားယွင်းနေပါသည်။
s = '\u2166'
print('s =', s)
print('isalpha:', s.isalpha())
# s = Ⅶ
# isalpha: False
စာကြောင်းသည် အက္ခရာဂဏန်းမဟုတ်ဟု ဆုံးဖြတ်ပါ။:str.isalnum()
isalnum() တွင် ယခုအချိန်အထိ ဖော်ပြထားသော အောက်ပါနည်းလမ်းများထဲမှ စာလုံးတစ်လုံးစီသည် မှန်ပါက မှန်ပါသည်။
isdecimal()
isdigit()
isnumeric()
isalpha()
အက္ခရာတစ်ခုစီကို တစ်ဦးချင်းအကဲဖြတ်ထားသည်၊ ထို့ကြောင့် အခြားနည်းလမ်းအားလုံးတွင် မှားနေသော်လည်း စာလုံးနှင့် နံပါတ်များပါရှိသော string တစ်ခုသည် isalnum() တွင် အမှန်ဖြစ်ပါမည်။
s = 'abc123'
print('s =', s)
print('isalnum:', s.isalnum())
print('isalpha:', s.isalpha())
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = abc123
# isalnum: True
# isalpha: False
# isdecimal: False
# isdigit: False
# isnumeric: False
စာကြောင်းများသည် ASCII စာလုံးများ ဟုတ်မဟုတ် ဆုံးဖြတ်သည်။:str.isascii()
Python 3.7 တွင် isascii(). စာကြောင်းရှိ အက္ခရာအားလုံးသည် ASCII ဇာတ်ကောင်များဖြစ်ပါက ၎င်းသည် အမှန်အတိုင်း ပြန်ဖြစ်သွားသည်။
ဂဏန်းများနှင့် အက္ခရာများအပြင် + နှင့် – ကဲ့သို့သော သင်္ကေတများလည်း မှန်ပါသည်။
s = 'abc123+-,.&'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = abc123+-,.&
# isascii: True
# isalnum: False
ASCII မဟုတ်သော hiragana နှင့် အခြားသော စာလုံးများသည် မှားသည်။
s = 'あいうえお'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = あいうえお
# isascii: False
# isalnum: True
အခြားနည်းလမ်းများနှင့်မတူဘဲ၊ isascii() သည် ဗလာစာကြောင်းတစ်ခုအတွက်ပင် မှန်ကန်ကြောင်းကို နောက်မှတွေ့ရမည်ဖြစ်သည်။
ညာဘက်လက်အလွတ် စီရင်ချက်
အချည်းနှီးသောစာကြောင်းသည် isascii() အတွက် မှန်ပြီး အခြားနည်းလမ်းများအတွက် false ဖြစ်သည်။
s = ''
print('s =', s)
print('isalnum:', s.isalnum())
print('isalpha:', s.isalpha())
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
print('isascii:', s.isascii())
# s =
# isalnum: False
# isalpha: False
# isdecimal: False
# isdigit: False
# isnumeric: False
# isascii: True
၎င်းသည် ဗလာစာကြောင်းမဟုတ်၊ ဆုံးဖြတ်ရန် bool() ကိုသုံးပါ။ ပြန်ပေးသည့်တန်ဖိုးသည် ဗလာစာကြောင်းတစ်ခုအတွက် false ဖြစ်ပြီး အခြားမဟုတ်ပါက မှန်ပါသည်။
print(bool(''))
# False
print(bool('abc123'))
# True
စာကြောင်းများကို နံပါတ်များအဖြစ်သို့ ပြောင်းနိုင်မလား။
အနုတ်လက္ခဏာ သို့မဟုတ် အပိုင်းကိန်းတန်ဖိုး လိုင်းများတွင် ကာလများ သို့မဟုတ် အနုတ်လက္ခဏာများ ပါရှိသည်။ ထို့ကြောင့် isascii() မှလွဲ၍ နည်းလမ်းအားလုံးအတွက် ရလဒ်သည် မှားယွင်းပါသည်။
isascii() အတွက် မှန်သော်လည်း၊ string တစ်ခုသည် အခြားသော သင်္ကေတများ သို့မဟုတ် အက္ခရာစဉ် အက္ခရာများ ပါဝင်နေသော်လည်း ၎င်းသည် မှန်သောကြောင့် ၎င်းသည် ဂဏန်းတန်ဖိုးသို့ ပြောင်းလဲနိုင်သည်ဆိုသည်ကို ဆုံးဖြတ်ရန် မသင့်လျော်ပါ။
s = '-1.23'
print('s =', s)
print('isalnum:', s.isalnum())
print('isalpha:', s.isalpha())
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
print('isascii:', s.isascii())
# s = -1.23
# isalnum: False
# isalpha: False
# isdecimal: False
# isdigit: False
# isnumeric: False
# isascii: True
လိုင်းများကို float() ဖြင့် floating point နံပါတ်များသို့ ပြောင်းနိုင်သည်။ ပြောင်း၍မရသော စာကြောင်းများအတွက် အမှားအယွင်း။
print(float('-1.23'))
# -1.23
print(type(float('-1.23')))
# <class 'float'>
# print(float('abc'))
# ValueError: could not convert string to float: 'abc'
ခြွင်းချက်အနေဖြင့် ကိုင်တွယ်ခြင်းနှင့်အတူ၊ string တစ်ခုကို float() ဖြင့်ပြောင်းလဲနိုင်သောအခါတွင် အမှန်အတိုင်းပြန်လာသည့် လုပ်ဆောင်ချက်ကို သတ်မှတ်နိုင်သည်။
def is_num(s):
try:
float(s)
except ValueError:
return False
else:
return True
print(is_num('123'))
# True
print(is_num('-1.23'))
# True
print(is_num('+1.23e10'))
# True
print(is_num('abc'))
# False
print(is_num('10,000,000'))
# False
ကော်မာ ခြားထားသော နံပါတ်သည်လည်း မှန်ကြောင်း ဆုံးဖြတ်လိုပါက ကော်မာကို ဖယ်ရှားရန် အစားထိုး() ကို အသုံးပြုပါ (၎င်းကို အလွတ်စာကြောင်းဖြင့် အစားထိုးပါ)။
def is_num_delimiter(s):
try:
float(s.replace(',', ''))
except ValueError:
return False
else:
return True
print(is_num_delimiter('10,000,000'))
# True
နေရာလွတ် ကန့်သတ်ချက်ကို ပံ့ပိုးလိုပါက replace() ကို ထပ်မံအသုံးပြုနိုင်ပါသည်။
def is_num_delimiter2(s):
try:
float(s.replace(',', '').replace(' ', ''))
except ValueError:
return False
else:
return True
print(is_num_delimiter2('10,000,000'))
# True
print(is_num_delimiter2('10 000 000'))
# True