Python nudi nekoliko metoda niza za određivanje i provjeru je li vrsta stringa numerička ili abecedna.
Svaka metoda je objašnjena primjerom koda.
- Određuje je li niz decimalna znamenka:
str.isdecimal()
- Određivanje je li niz broj:
str.isdigit()
- Određuje je li niz znak koji predstavlja broj:
str.isnumeric()
- Određuje je li niz abecedni:
str.isalpha()
- Odredite je li niz alfanumerički:
str.isalnum()
- Određuje jesu li nizovi ASCII znakovi:
str.isascii()
- Presuda praznog niza
- Odredite mogu li se nizovi pretvoriti u brojeve
Za druge metode osim isascii(), niz koji sadrži prazan niz, sljedeće simbole, itd., je netočan.
,
.
-
-1,23, itd., kao što je brojčana vrijednost objašnjena na kraju ovog odjeljka.
Regularni izrazi se mogu koristiti za fleksibilnije određivanje tipova znakova i za izdvajanje relevantnih tipova znakova.
Pogledajte sljedeći članak za više informacija o tome kako odrediti sljedeće
- Kako pretvoriti numerički niz (str) u broj (int, float)
- Kako odrediti velika i mala slova
- POVEZANO:Pretvaranje niza brojeva u numeričke vrijednosti u Pythonu
- POVEZANO:Popis metoda niza za manipuliranje velikim i malim slovima u Pythonu
- Određuje je li niz decimalna znamenka:str.isdecimal()
- Određivanje je li niz broj:str.isdigit()
- Određuje je li niz znak koji predstavlja broj:str.isnumeric()
- Određuje je li niz abecedni:str.isalpha()
- Odredite je li niz alfanumerički:str.isalnum()
- Određuje jesu li nizovi ASCII znakovi:str.isascii()
- Presuda praznog niza
- Odredite mogu li se nizovi pretvoriti u brojeve
Određuje je li niz decimalna znamenka:str.isdecimal()
U isdecimal() vrijedi ako su svi znakovi decimalne znamenke, odnosno znakovi u općoj kategoriji Nd Unicodea. To vrijedi i za arapske brojeve pune širine itd.
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
Ako sadrži simbol kao što je znak minus ili točka, netočno je. Na primjer, ako želite odrediti da je niz kao što je ‘-1,23’ numerička vrijednost, možete upotrijebiti rukovanje iznimkama. To je objašnjeno na kraju ovog odjeljka.
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
Određivanje je li niz broj:str.isdigit()
U isdigit(), osim brojeva koji su istiniti u isdecimal(), istiniti su i brojevi čija je vrijednost svojstva Unicode Numeric_Type Digit ili Decimal.
Na primjer, superscript broj koji predstavlja kvadrat je netočan u isdecimal(), ali istinit u isdigit().
- superscript broj koji predstavlja kvadrat
- ²
- \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
Određuje je li niz znak koji predstavlja broj:str.isnumeric()
U isnumeric(), osim brojeva koji su istiniti u isdigit(), istiniti su i brojevi čija je vrijednost svojstva Unicode Numeric_Type Numeric.
Razlomci, rimski brojevi i kineski brojevi su također istiniti.
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
Određuje je li niz abecedni:str.isalpha()
U isalpha(), svojstvo opće kategorije Unicode s jednim od sljedećih je istinito.
Lm
Lt
Lu
Ll
Lo
Abeceda, kineski znakovi itd. bit će istiniti.
s = 'abc'
print('s =', s)
print('isalpha:', s.isalpha())
# s = abc
# isalpha: True
s = '漢字'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 漢字
# isalpha: True
Arapski brojevi su lažni, ali kineski brojevi su istiniti jer su također kineski znakovi; međutim, nule u kineskim brojevima su lažne.
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
Rimski brojevi su lažni.
s = '\u2166'
print('s =', s)
print('isalpha:', s.isalpha())
# s = Ⅶ
# isalpha: False
Odredite je li niz alfanumerički:str.isalnum()
U isalnum() je istina ako je svaki znak istinit u bilo kojoj od sljedećih metoda navedenih do sada.
isdecimal()
isdigit()
isnumeric()
isalpha()
Svaki znak se procjenjuje pojedinačno, tako da će niz koji sadrži slova i brojeve biti istinit u isalnum() čak i ako je lažan u svim ostalim metodama.
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
Određuje jesu li nizovi ASCII znakovi:str.isascii()
Python 3.7 dodao je isascii(). Vraća true ako su svi znakovi u nizu ASCII znakovi.
Osim brojeva i slova, istiniti su i simboli kao što su + i -.
s = 'abc123+-,.&'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = abc123+-,.&
# isascii: True
# isalnum: False
Ne-ASCII hiragana i drugi znakovi su lažni.
s = 'あいうえお'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = あいうえお
# isascii: False
# isalnum: True
Kao što ćemo vidjeti sljedeće, za razliku od drugih metoda, isascii() vraća true čak i za prazan niz.
Presuda praznog niza
Prazan niz je istinit za isascii(), a netočan za ostale metode.
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
Koristite bool() da odredite je li to prazan niz. Povratna vrijednost je lažna za prazan niz i istinita u suprotnom.
print(bool(''))
# False
print(bool('abc123'))
# True
Odredite mogu li se nizovi pretvoriti u brojeve
Nizovi negativnih ili frakcijskih vrijednosti sadrže točke ili znakove minus. Stoga je rezultat lažan za sve metode osim isascii().
Iako je istinito za isascii(), nije prikladno za određivanje može li se niz pretvoriti u brojčanu vrijednost, budući da je istinit čak i ako sadrži druge simbole ili abecedne znakove.
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
Nizovi se mogu pretvoriti u brojeve s pomičnim zarezom pomoću float(). Pogreška za nizove koji se ne mogu pretvoriti.
print(float('-1.23'))
# -1.23
print(type(float('-1.23')))
# <class 'float'>
# print(float('abc'))
# ValueError: could not convert string to float: 'abc'
Uz rukovanje iznimkama, može se definirati funkcija koja vraća true kada se niz može pretvoriti pomoću 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
Ako želite utvrditi da je i broj odvojen zarezom istinit, upotrijebite replace() da uklonite zarez (zamijenite ga praznim nizom).
def is_num_delimiter(s):
try:
float(s.replace(',', ''))
except ValueError:
return False
else:
return True
print(is_num_delimiter('10,000,000'))
# True
Ako želite podržati razgraničenje razmaka, možete dalje koristiti 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