Python pakub mitmeid stringi meetodeid, et määrata ja kontrollida, kas stringi tüüp on numbriline või tähestikuline.
Iga meetodit selgitatakse koos näidiskoodiga.
- Määratleb, kas string on kümnendkoht:
str.isdecimal()
- Tehes kindlaks, kas string on number:
str.isdigit()
- Määratleb, kas string on numbrit kujutav märk:
str.isnumeric()
- Määratleb, kas string on tähestikuline:
str.isalpha()
- Määrata, kas string on tähtnumbriline:
str.isalnum()
- Määratleb, kas stringid on ASCII tähemärgid.:
str.isascii()
- Kohtuotsus tühja stringi kohta
- Määrata, kas stringid saab teisendada numbriteks
Muude meetodite kui isascii() puhul on tühja stringi, järgmisi sümboleid jne sisaldav string vale.
,
.
-
-1,23 jne. numbrilise väärtusena on selgitatud käesoleva jaotise lõpus.
Regulaaravaldisi saab kasutada märgitüüpide paindlikumaks määramiseks ja asjakohaste märgitüüpide väljavõtmiseks.
Lisateavet selle kohta, kuidas määrata järgmist, leiate järgmisest artiklist
- Kuidas teisendada numbriline string (str) arvuks (int, float)
- Kuidas määrata suur- ja väiketähti
- RELATED:Numbrite stringi teisendamine numbrilisteks väärtusteks Pythonis
- RELATED:Loetelu string meetodid manipuleerida juhul Pythonis
- Määratleb, kas string on kümnendkoht: str.isdecimal()
- Tehes kindlaks, kas string on number: str.isdigit()
- Määratleb, kas string on numbrit kujutav märk: str.isnumeric()
- Määratleb, kas string on tähestikuline: str.isalpha()
- Määrata, kas string on tähtnumbriline: str.isalnum()
- Määratleb, kas stringid on ASCII tähemärgid.: str.isascii()
- Kohtuotsus tühja stringi kohta
- Määrata, kas stringid saab teisendada numbriteks
Määratleb, kas string on kümnendkoht: str.isdecimal()
Funktsioonis isdecimal() on tõene, kui kõik märgid on kümnendmärgid, st Unicode'i üldkategooria Nd märgid. See on tõene ka täies laiuses araabia numbrite jne puhul.
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
Kui see sisaldab sümbolit, näiteks miinusmärki või punkti, on see vale. Näiteks kui soovite kindlaks teha, et selline string nagu '-1.23' on arvväärtus, saate kasutada erandite käsitlemist. Seda selgitatakse selle jaotise lõpus.
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
Tehes kindlaks, kas string on number: str.isdigit()
Isdigit() funktsioonis on lisaks numbritele, mis on tõesed isdecimal() funktsioonis, tõesed ka numbrid, mille Unicode'i omaduse Numeric_Type väärtus on Digit või Decimal.
Näiteks ruutu kujutav ülakohaline arv on isdecimal() funktsioonis false, kuid isdigit() funktsioonis true.
- ülakohaga number, mis tähistab ruutu
- ²
- '\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
Määratleb, kas string on numbrit kujutav märk: str.isnumeric()
isnumeric() funktsioonis on lisaks numbritele, mis on tõesed isdigit() funktsioonis, tõesed ka numbrid, mille Unicode'i omaduse väärtus Numeric_Type on Numeric.
Tõsi on ka murdarvud, Rooma numbrid ja hiina numbrid.
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
Määratleb, kas string on tähestikuline: str.isalpha()
In isalpha() on Unicode'i üldkategooria omadus, mille puhul on üks järgmistest omadustest tõene.
Lm
Lt
Lu
Ll
Lo
Tähestik, hiina tähemärgid jne. on tõsi.
s = 'abc'
print('s =', s)
print('isalpha:', s.isalpha())
# s = abc
# isalpha: True
s = '漢字'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 漢字
# isalpha: True
Araabia numbrid on valed, aga hiina numbrid on tõesed, sest need on ka hiina tähemärgid; aga nullid hiina numbrites on valed.
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
Rooma numbrid on valed.
s = '\u2166'
print('s =', s)
print('isalpha:', s.isalpha())
# s = Ⅶ
# isalpha: False
Määrata, kas string on tähtnumbriline: str.isalnum()
Funktsioonis isalnum() on tõene, kui iga tähemärk on tõene mõnes järgmises seni loetletud meetodis.
isdecimal()
isdigit()
isnumeric()
isalpha()
Iga tähemärki hinnatakse eraldi, nii et tähed ja numbrid sisaldav string on isalnum() funktsioonis tõene, isegi kui kõigis teistes meetodites on see vale.
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
Määratleb, kas stringid on ASCII tähemärgid.: str.isascii()
Python 3.7 lisas isascii(). See tagastab true, kui kõik tähemärgid stringis on ASCII tähemärgid.
Lisaks numbritele ja tähtedele kehtivad ka sellised sümbolid nagu + ja -.
s = 'abc123+-,.&'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = abc123+-,.&
# isascii: True
# isalnum: False
Mitte-ASCII hiragana ja muud tähemärgid on valed.
s = 'あいうえお'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = あいうえお
# isascii: False
# isalnum: True
Nagu me järgnevalt näeme, tagastab isascii() erinevalt teistest meetoditest true ka tühja stringi puhul.
Kohtuotsus tühja stringi kohta
Tühi string on isascii() puhul tõene ja teiste meetodite puhul vale.
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
Kasuta bool(), et määrata, kas see on tühi string. Tagastusväärtus on tühja stringi korral false ja muidu true.
print(bool(''))
# False
print(bool('abc123'))
# True
Määrata, kas stringid saab teisendada numbriteks
Negatiivsed või murdarvud sisaldavad punkte või miinusmärke. Seetõttu on tulemus vale kõigi meetodite puhul, välja arvatud isascii().
Kuigi isascii() on tõene, ei sobi see selleks, et määrata, kas stringi saab teisendada numbriliseks väärtuseks, sest see on tõene ka siis, kui see sisaldab muid sümboleid või tähemärke.
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
Stringid saab teisendada float() abil ujukomaarvudeks. Viga stringide puhul, mida ei saa teisendada.
print(float('-1.23'))
# -1.23
print(type(float('-1.23')))
# <class 'float'>
# print(float('abc'))
# ValueError: could not convert string to float: 'abc'
Erandikäsitlusega saab defineerida funktsiooni, mis tagastab true, kui stringi saab teisendada funktsiooniga 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
Kui soovite kindlaks teha, et ka komaga eraldatud arv on tõene, kasutage replace(), et eemaldada koma (asendada see tühja stringiga).
def is_num_delimiter(s):
try:
float(s.replace(',', ''))
except ValueError:
return False
else:
return True
print(is_num_delimiter('10,000,000'))
# True
Kui soovite toetada tühikute eraldamist, võite kasutada funktsiooni replace() täiendavalt.
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