Python biedt verschillende string-methoden om te bepalen en te controleren of een string van het type numeriek of alfabetisch is.
Elke methode wordt uitgelegd met voorbeeldcode.
- Bepaalt of een string een decimaal cijfer is:
str.isdecimal()
- Bepalen of een string een getal is:
str.isdigit()
- Bepaalt of een string een teken is dat een getal voorstelt:
str.isnumeric()
- Bepaalt of de string alfabetisch is:
str.isalpha()
- Bepaal of de string alfanumeriek is:
str.isalnum()
- Bepaalt of strings ASCII-tekens zijn:
str.isascii()
- Uitspraak van lege string
- Bepaal of strings kunnen worden geconverteerd naar getallen
Voor andere methoden dan isascii(), is een string die een lege string bevat, de volgende symbolen, enz. vals.
,
.
-
-1,23, enz., als numerieke waarde wordt uitgelegd aan het eind van dit hoofdstuk.
Reguliere expressies kunnen worden gebruikt om de karaktertypen flexibeler te bepalen en de relevante karaktertypen te extraheren.
Zie het volgende artikel voor meer informatie over hoe u het volgende kunt bepalen
- Hoe een numerieke string (str) omzetten naar een getal (int, float)
- Hoe bepaal ik hoofdletters en kleine letters?
- GERELATEERD:Een reeks getallen omzetten naar numerieke waarden in Python
- GERELATEERD:Lijst van tekenreeks-methoden om hoofdletters te manipuleren in Python
- Bepaalt of een string een decimaal cijfer is: str.isdecimal()
- Bepalen of een string een getal is: str.isdigit()
- Bepaalt of een string een teken is dat een getal voorstelt: str.isnumeric()
- Bepaalt of de string alfabetisch is: str.isalpha()
- Bepaal of de string alfanumeriek is: str.isalnum()
- Bepaalt of strings ASCII-tekens zijn: str.isascii()
- Uitspraak van lege string
- Bepaal of strings kunnen worden geconverteerd naar getallen
Bepaalt of een string een decimaal cijfer is: str.isdecimal()
In isdecimal() is het waar als alle tekens decimale cijfers zijn, dat wil zeggen, tekens in de algemene categorie Nd van Unicode. Het is ook waar voor Arabische cijfers over de gehele breedte, enz.
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
Als het een symbool bevat, zoals een minteken of een punt, is het onwaar. Als u bijvoorbeeld wilt bepalen dat een tekenreeks zoals '-1.23' een numerieke waarde is, kunt u gebruik maken van uitzonderingsafhandeling. Dit wordt aan het eind van dit hoofdstuk uitgelegd.
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
Bepalen of een string een getal is: str.isdigit()
In isdigit() zijn, naast getallen die waar zijn in isdecimal(), ook getallen waarvan de Unicode-eigenschapswaarde Numeric_Type Cijfer of Decimaal is, waar.
Bijvoorbeeld, een superscript getal dat een vierkant voorstelt is vals in isdecimal() maar waar in isdigit().
- superscript getal dat het kwadraat weergeeft
- ²
- “\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
Bepaalt of een string een teken is dat een getal voorstelt: str.isnumeric()
In isnumeric() zijn, naast getallen die waar zijn in isdigit(), ook getallen waarvan de Unicode eigenschapswaarde Numeric_Type is Numeric waar.
Breuken, Romeinse cijfers, en Chinese cijfers zijn ook waar.
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
Bepaalt of de string alfabetisch is: str.isalpha()
In isalpha(), een Unicode algemene categorie eigenschap met een van de volgende is waar.
Lm
Lt
Lu
Ll
Lo
Het alfabet, Chinese karakters, enz. zullen waar zijn.
s = 'abc'
print('s =', s)
print('isalpha:', s.isalpha())
# s = abc
# isalpha: True
s = '漢字'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 漢字
# isalpha: True
Arabische cijfers zijn vals, maar Chinese cijfers zijn waar omdat het ook Chinese karakters zijn; nullen in Chinese cijfers zijn echter vals.
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
Romeinse cijfers zijn vals.
s = '\u2166'
print('s =', s)
print('isalpha:', s.isalpha())
# s = Ⅶ
# isalpha: False
Bepaal of de string alfanumeriek is: str.isalnum()
In isalnum(), is het waar als elk karakter waar is in een van de volgende tot nu toe opgesomde methoden.
isdecimal()
isdigit()
isnumeric()
isalpha()
Elk teken wordt afzonderlijk geëvalueerd, dus een tekenreeks die letters en cijfers bevat zal waar zijn in isalnum() zelfs als het vals is in alle andere methodes.
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
Bepaalt of strings ASCII-tekens zijn: str.isascii()
Python 3.7 voegde isascii() toe. Deze geeft true terug als alle karakters in de string ASCII karakters zijn.
Naast cijfers en letters zijn ook symbolen als + en – waar.
s = 'abc123+-,.&'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = abc123+-,.&
# isascii: True
# isalnum: False
Non-ASCII hiragana en andere tekens zijn vals.
s = 'あいうえお'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = あいうえお
# isascii: False
# isalnum: True
Zoals we hierna zullen zien, in tegenstelling tot de andere methodes, retourneert isascii() waar, zelfs voor een lege string.
Uitspraak van lege string
Een lege string is waar voor isascii() en vals voor de andere methodes.
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
Gebruik bool() om te bepalen of het een lege string is. De return waarde is false voor een lege string en true anders.
print(bool(''))
# False
print(bool('abc123'))
# True
Bepaal of strings kunnen worden geconverteerd naar getallen
strings met negatieve of fractionele waarden bevatten punten of mintekens. Daarom is het resultaat vals voor alle methoden behalve isascii().
Hoewel waar voor isascii(), is het niet geschikt om te bepalen of een string kan worden geconverteerd naar een numerieke waarde, aangezien het ook waar is als het andere symbolen of alfabetische tekens bevat.
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
Teksten kunnen geconverteerd worden naar drijvende komma getallen met float(). Fout voor strings die niet kunnen worden geconverteerd.
print(float('-1.23'))
# -1.23
print(type(float('-1.23')))
# <class 'float'>
# print(float('abc'))
# ValueError: could not convert string to float: 'abc'
Met uitzonderingsafhandeling kan een functie worden gedefinieerd die waar teruggeeft als een string kan worden geconverteerd met 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
Als je wilt bepalen dat een door komma's gescheiden getal ook waar is, gebruik dan replace() om de komma te verwijderen (te vervangen door een lege string).
def is_num_delimiter(s):
try:
float(s.replace(',', ''))
except ValueError:
return False
else:
return True
print(is_num_delimiter('10,000,000'))
# True
Als je de scheiding van spaties wilt ondersteunen, kun je replace() verder gebruiken.
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