Python përcakton dhe kontrollon nëse një varg është numerik apo alfabetik

biznes

Python ofron disa metoda vargu për të përcaktuar dhe kontrolluar nëse një lloj vargu është numerik apo alfabetik.

Çdo metodë shpjegohet me kodin e mostrës.

  • Përcakton nëse një varg është një shifër dhjetore:str.isdecimal()
  • Përcaktimi nëse një varg është numër:str.isdigit()
  • Përcakton nëse një varg është një karakter që përfaqëson një numër:str.isnumeric()
  • Përcakton nëse vargu është alfabetik:str.isalpha()
  • Përcaktoni nëse vargu është alfanumerik:str.isalnum()
  • Përcakton nëse vargjet janë karaktere ASCII:str.isascii()
  • Gjykimi i vargut bosh
  • Përcaktoni nëse vargjet mund të shndërrohen në numra

Për metoda të tjera përveç isascii(), një varg që përmban një varg bosh, simbolet e mëposhtme, etj., është false.

  • ,
  • .
  • -

-1.23, etj., si vlerë numerike shpjegohet në fund të këtij seksioni.

Shprehjet e rregullta mund të përdoren për të përcaktuar llojet e karaktereve në mënyrë më fleksibël dhe për të nxjerrë llojet përkatëse të karaktereve.

Shihni artikullin vijues për më shumë informacion se si të përcaktoni sa vijon

  • Si të konvertohet një varg numerik (str) në një numër (int, float)
  • Si të përcaktojmë shkronjat e mëdha dhe të vogla

Përcakton nëse një varg është një shifër dhjetore:str.isdecimal()

Në isdecimal(), është e vërtetë nëse të gjithë karakteret janë shifra dhjetore, domethënë karaktere në kategorinë e përgjithshme Nd të Unicode. Është gjithashtu e vërtetë për numrat arabë me gjerësi të plotë, etj.

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

Nëse përmban një simbol të tillë si një shenjë minus ose një pikë, është e rreme. Për shembull, nëse doni të përcaktoni se një varg si ‘-1.23’ është një vlerë numerike, mund të përdorni trajtimin e përjashtimeve. Kjo shpjegohet në fund të këtij seksioni.

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

Përcaktimi nëse një varg është numër:str.isdigit()

Në isdigit(), përveç numrave që janë true në isdecimal(), janë të vërtetë edhe numrat, vlera e vetive Unicode të të cilëve Numeric_Type është Digit ose Decimal.

Për shembull, një numër mbishkrimi që përfaqëson një katror është false në isdecimal() por true në isdigit().

  • numër mbishkrimi që përfaqëson katrorin
    • ²
    • \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

Përcakton nëse një varg është një karakter që përfaqëson një numër:str.isnumeric()

Në isnumeric(), përveç numrave që janë true në isdigit(), janë të vërtetë edhe numrat, vlera e vetive Unicode të të cilëve Numeric_Type është Numeric.

Thyesat, numrat romakë dhe numrat kinezë janë gjithashtu të vërtetë.

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

Përcakton nëse vargu është alfabetik:str.isalpha()

Në isalpha(), një pronë e kategorisë së përgjithshme Unicode me një nga sa vijon është e vërtetë.

  • Lm
  • Lt
  • Lu
  • Ll
  • Lo

Alfabeti, shkronjat kineze, etj., do të jenë të vërteta.

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

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

Numrat arabë janë të rremë, por numrat kinezë janë të vërtetë sepse janë gjithashtu karaktere kineze; megjithatë, zerat në numrat kinezë janë false.

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

Numrat romakë janë të rremë.

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

Përcaktoni nëse vargu është alfanumerik:str.isalnum()

Në isalnum(), është e vërtetë nëse çdo karakter është i vërtetë në ndonjë nga metodat e mëposhtme të listuara deri më tani.

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

Çdo karakter vlerësohet individualisht, kështu që një varg që përmban shkronja dhe numra do të jetë true në isalnum() edhe nëse është false në të gjitha metodat e tjera.

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

Përcakton nëse vargjet janë karaktere ASCII:str.isascii()

Python 3.7 shtoi isascii(). Ajo kthehet e vërtetë nëse të gjithë karakteret në varg janë karaktere ASCII.

Përveç numrave dhe shkronjave, simbole të tilla si + dhe – janë gjithashtu të vërteta.

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

Hiragana jo-ASCII dhe karaktere të tjera janë false.

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

Siç do ta shohim më pas, ndryshe nga metodat e tjera, isascii() kthehet true edhe për një varg bosh.

Gjykimi i vargut bosh

Një varg bosh është true për isascii() dhe false për metodat e tjera.

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

Përdor bool() për të përcaktuar nëse është një varg bosh. Vlera e kthyer është false për një varg bosh dhe e vërtetë përndryshe.

print(bool(''))
# False

print(bool('abc123'))
# True

Përcaktoni nëse vargjet mund të shndërrohen në numra

Vargjet me vlerë negative ose thyesore përmbajnë pika ose shenja minus. Prandaj, rezultati është i rremë për të gjitha metodat përveç isascii().

Edhe pse e vërtetë për isascii(), nuk është e përshtatshme për të përcaktuar nëse një varg mund të konvertohet në një vlerë numerike, pasi është e vërtetë edhe nëse përmban simbole të tjera ose karaktere alfabetike.

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

Vargjet mund të konvertohen në numra me pikë lundruese me float(). Gabim për vargjet që nuk mund të konvertohen.

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

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

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

Me trajtimin e përjashtimeve, mund të përcaktohet një funksion që kthen true kur një varg mund të konvertohet me 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

Nëse dëshironi të përcaktoni që një numër i ndarë me presje është gjithashtu i vërtetë, përdorni zëvendësimin() për të hequr presjen (zëvendësojeni atë me një varg bosh).

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

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

Nëse dëshironi të mbështesni përcaktimin e hapësirës së bardhë, mund të përdorni më tej zëvendësimin().

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