Python තන්තුවක් සංඛ්‍යාත්මකද අකාරාදීද යන්න තීරණය කර පරීක්ෂා කරයි

ව්යාපාරික

තන්තු වර්ගයක් සංඛ්‍යාත්මකද අකාරාදීද යන්න තීරණය කිරීමට සහ පරීක්ෂා කිරීමට පයිතන් තන්තු ක්‍රම කිහිපයක් සපයයි.

සෑම ක්රමයක්ම නියැදි කේතය සමඟ විස්තර කර ඇත.

  • තන්තුවක් දශම ඉලක්කමක් ද යන්න තීරණය කරයි:str.isdecimal()
  • තන්තුවක් අංකයක් දැයි තීරණය කිරීම:str.isdigit()
  • තන්තුවක් යනු සංඛ්‍යාවක් නියෝජනය කරන අක්ෂරයක්ද යන්න තීරණය කරයි:str.isnumeric()
  • තන්තුව අකාරාදී නම් තීරණය කරයි:str.isalpha()
  • තන්තුව අක්ෂරාංක ද යන්න තීරණය කරන්න:str.isalnum()
  • තන්තු ASCII අක්ෂර ද යන්න තීරණය කරයි:str.isascii()
  • හිස් නූල් විනිශ්චය
  • නූල් සංඛ්‍යා බවට පරිවර්තනය කළ හැකිද යන්න තීරණය කරන්න

isascii() හැර වෙනත් ක්‍රම සඳහා හිස් තන්තුවක් අඩංගු තන්තුවක්, පහත සංකේත ආදිය අසත්‍ය වේ.

  • ,
  • .
  • -

-1.23, ආදිය, සංඛ්යාත්මක අගයක් ලෙස මෙම කොටස අවසානයේ පැහැදිලි කර ඇත.

නිත්‍ය ප්‍රකාශන වඩාත් නම්‍යශීලී ලෙස අක්ෂර වර්ග නිර්ණය කිරීමට සහ අදාළ අක්ෂර වර්ග උපුටා ගැනීමට භාවිතා කළ හැක.

පහත සඳහන් දේ තීරණය කරන්නේ කෙසේද යන්න පිළිබඳ වැඩි විස්තර සඳහා පහත ලිපිය බලන්න

  • සංඛ්‍යාත්මක තන්තුවක් (str) අංකයකට පරිවර්තනය කරන්නේ කෙසේද (int, float)
  • ඉහළ සහ පහළ අකුරු තීරණය කරන්නේ කෙසේද?

තන්තුවක් දශම ඉලක්කමක් ද යන්න තීරණය කරයි: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(), is decimal() හි සත්‍ය වන සංඛ්‍යා වලට අමතරව, Unicode දේපල අගය Numeric_Type ඉලක්කම් හෝ දශම වන සංඛ්‍යා ද සත්‍ය වේ.

උදාහරණයක් ලෙස, චතුරස්‍රයක් නියෝජනය කරන උපරි අකුරු අංකයක් දශම() හි අසත්‍ය වන නමුත් 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() හි සත්‍ය වන සංඛ්‍යා වලට අමතරව, Unicode දේපල අගය 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()

සෑම අක්ෂරයක්ම තනි තනිව ඇගයීමට ලක් කෙරේ, එබැවින් අනෙකුත් සියලුම ක්‍රමවල අසත්‍ය වුවද, 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()

පයිතන් 3.7 isascii() එකතු කළා. තන්තුවෙහි සියලුම අක්ෂර ASCII අක්ෂර නම් එය සත්‍ය වේ.

ඉලක්කම් සහ අකුරු වලට අමතරව + සහ – වැනි සංකේත ද සත්‍ය වේ.

s = 'abc123+-,.&'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = abc123+-,.&
# isascii: True
# isalnum: False

ASCII නොවන හිරගානා සහ අනෙකුත් චරිත අසත්‍යයි.

s = 'あいうえお'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = あいうえお
# isascii: False
# isalnum: True

අපි මීළඟට දකින පරිදි, අනෙකුත් ක්‍රම මෙන් නොව, හිස් තන්තුවක් සඳහා වුවද isascii() සත්‍ය වේ.

හිස් නූල් විනිශ්චය

හිස් තන්තුව isascii() සඳහා සත්‍ය වන අතර අනෙකුත් ක්‍රම සඳහා අසත්‍ය වේ.

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() භාවිතා කරන්න. ප්‍රතිලාභ අගය හිස් තන්තුවක් සඳහා අසත්‍ය වන අතර වෙනත් ආකාරයකින් සත්‍ය වේ.

print(bool(''))
# False

print(bool('abc123'))
# True

නූල් සංඛ්‍යා බවට පරිවර්තනය කළ හැකිද යන්න තීරණය කරන්න

සෘණ හෝ භාගික අගය තන්තු වල කාල හෝ අඩු ලකුණු අඩංගු වේ. එබැවින් isascii() හැර අනෙකුත් සියලුම ක්‍රම සඳහා ප්‍රතිඵලය අසත්‍ය වේ.

isascii() සඳහා සත්‍ය වුවද, තන්තුවක් සංඛ්‍යාත්මක අගයකට පරිවර්තනය කළ හැකිද යන්න තීරණය කිරීමට සුදුසු නොවේ, මන්ද එහි වෙනත් සංකේත හෝ අකාරාදී අක්ෂර අඩංගු වුවද එය සත්‍ය වේ.

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() සමඟ පාවෙන ලක්ෂ්‍ය සංඛ්‍යා බවට පරිවර්තනය කළ හැක. පරිවර්තනය කළ නොහැකි තන්තු සඳහා දෝෂයකි.

print(float('-1.23'))
# -1.23

print(type(float('-1.23')))
# <class 'float'>

# print(float('abc'))
# ValueError: could not convert string to float: 'abc'

ව්‍යතිරේක හැසිරවීම සමඟින්, තන්තුවක් 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

ඔබට සුදු අවකාශය සීමා නිර්ණයට සහාය වීමට අවශ්‍ය නම්, ඔබට තවදුරටත් ප්‍රතිස්ථාපනය() භාවිතා කළ හැක.

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
Copied title and URL