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
- LIDHUR:Konvertimi i një vargu numrash në vlera numerike në Python
- LIDHUR:Lista e metodave të vargut për të manipuluar rastet në Python
- 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ë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