Python diyar dike û kontrol dike ka rêzik hejmar e an alfabe ye

Dikan

Python çend awayên rêzikê peyda dike da ku diyar bike û kontrol bike ka celebek jimare an alfabîkî ye.

Her rêbaz bi koda nimûneyê tê ravekirin.

  • Tesbît dike ka rêzik jimareke dehiyê ye yan na:str.isdecimal()
  • Tesbîtkirina ka rêzik hejmar e:str.isdigit()
  • Diyar dike ka rêzik karakterek e ku hejmarek temsîl dike:str.isnumeric()
  • Diyar dike ka rêzik alfabe ye:str.isalpha()
  • Tesbît bikin ka rêzik alfanjimar e:str.isalnum()
  • Diyar dike ka rêzik tîpên ASCII ne:str.isascii()
  • Darizandina têl vala
  • Tesbît bikin ka rêzik dikarin bibin jimare

Ji bo rêbazên ji bilî isascii(), rêzika ku tê de rêzek vala, sembolên jêrîn, hwd., xelet e.

  • ,
  • .
  • -

-1.23 û hwd., wekî nirxek jimarî di dawiya vê beşê de tê ravekirin.

Vebêjên birêkûpêk dikarin werin bikar anîn da ku celebên karakteran bi nermîtir diyar bikin û celebên karakterên têkildar derxînin.

Ji bo bêtir agahdarî li ser ka meriv çawa li jêr diyar dike li gotara jêrîn binêre

  • Meriv çawa rêzek hejmarî (str) vediguheze hejmarek (int, float)
  • Meriv çawa tîpên jorîn û jêrîn diyar dike

Tesbît dike ka rêzik jimareke dehiyê ye yan na:str.isdecimal()

Di isdecimal(), rast e ger hemî tîp jimareyên dehiyê bin, ango tîpên di kategoriya giştî ya Nd ya Unicode de bin. Her weha ji bo jimareyên erebî yên tev-fireh û hwd jî rast e.

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

Ger sembolek wekî nîşanek kêm an xalek hebe, ew xelet e. Mînakî, heke hûn dixwazin diyar bikin ku rêzek wekî ‘-1.23’ nirxek hejmarî ye, hûn dikarin karanîna îstîsna bikar bînin. Ev di dawiya vê beşê de tê ravekirin.

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

Tesbîtkirina ka rêzik hejmar e:str.isdigit()

Di isdigit() de ji bilî jimarên ku di isdecimal() de rast in, jimareyên ku nirxa taybetiya Unicode ya Numeric_Type Reqedar an Dehanî ye jî rast in.

Mînakî, jimareyek sernivîsa ku çargoşeyekê temsîl dike di îstîmal() de xelet e lê di isdigit() de rast e.

  • hejmara sernivîsê ku çargoşe temsîl dike
    • ²
    • \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

Diyar dike ka rêzik karakterek e ku hejmarek temsîl dike:str.isnumeric()

Di isnumeric() de ji bilî hejmarên ku di isdigit() de rast in, hejmarên ku nirxa taybetiya Unicode ya Numeric_Type Hejmarî ye jî rast in.

Fraksiyon, jimareyên romî û jimareyên çînî jî rast in.

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

Diyar dike ka rêzik alfabe ye:str.isalpha()

Di isalpha (), taybetmendiyek kategoriya giştî ya Unicode ya ku yek ji jêrîn rast e.

  • Lm
  • Lt
  • Lu
  • Ll
  • Lo

Alfabe, tîpên çînî û hwd wê rast bin.

s = 'abc'
print('s =', s)
print('isalpha:', s.isalpha())
# s = abc
# isalpha: True

s = '漢字'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 漢字
# isalpha: True

Jimarên erebî derew in, lê jimareyên çînî rast in ji ber ku ew jî tîpên çînî ne; lebê, sifir di jimareyên Chinese derew in.

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

Jimarên romî derew in.

s = '\u2166'
print('s =', s)
print('isalpha:', s.isalpha())
# s = Ⅶ
# isalpha: False

Tesbît bikin ka rêzik alfanjimar e:str.isalnum()

Di isalnum(), rast e heke her karakter di yek ji wan rêbazên jêrîn ên ku heya nuha hatine navnîş kirin de rast be.

  • isdecimal()
  • isdigit()
  • isnumeric()
  • isalpha()

Her karekterek kesane tê nirxandin, ji ber vê yekê rêzikek ku tîp û jimar tê de hene dê di isalnum() de rast be jî di hemî rêbazên din de xelet be.

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

Diyar dike ka rêzik tîpên ASCII ne:str.isascii()

Python 3.7 isascii (). Ger hemî tîpên di rêzikê de tîpên ASCII bin, ew rast vedigere.

Ji bilî hejmar û tîpan, nîşaneyên wekî + û – jî rast in.

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

Hiragana ne-ASCII û karakterên din derew in.

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

Wekî ku em ê paşê bibînin, berevajî rêbazên din, isascii () ji bo rêzek vala jî rast vedigere.

Darizandina têl vala

Rêzikek vala ji bo isascii() rast e û ji bo rêbazên din jî xelet e.

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() bikar bînin da ku diyar bikin ka ew rêzek vala ye. Nirxa vegerê ji bo rêzek vala derew e û wekî din rast e.

print(bool(''))
# False

print(bool('abc123'))
# True

Tesbît bikin ka rêzik dikarin bibin jimare

Rêzên nirxê negatîf an fraksîyonî deman an jî nîşanên kêmbûnê dihewîne. Ji ber vê yekê, encam ji bo hemî rêbazan ji bilî isascii ().

Her çend ji bo isascii(-ê) rast be jî, ji bo destnîşankirina ka rêzik dikare bibe nirxek jimareyî ne guncaw e, ji ber ku rast e her çend sembolên din an tîpên alfabîkî jî hebin.

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

Rêz dikarin bi float(-ê) veguhezînin hejmarên xala herikandinê. Çewtiya ji bo rêzikên ku nayên veguherandin.

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

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

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

Digel destwerdana îstîsnayan, fonksiyonek dikare were destnîşan kirin ku dema ku rêzek bi float() were veguheztin rast vedigere.

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

Heke hûn dixwazin diyar bikin ku jimareyek ji hev veqetandî jî rast e, şûna () bikar bînin da ku girseyê jê bikin (li şûna wê bi rêzek vala veguherînin).

def is_num_delimiter(s):
    try:
        float(s.replace(',', ''))
    except ValueError:
        return False
    else:
        return True

print(is_num_delimiter('10,000,000'))
# True

Heke hûn dixwazin dabeşkirina cîhê spî piştgirî bikin, hûn dikarin şûna () bêtir bikar bînin.

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