Python tarjoaa useita merkkijonomenetelmiä, joilla voidaan määrittää ja tarkistaa, onko merkkijonotyyppi numeerinen vai aakkosellinen.
Jokainen menetelmä selitetään esimerkkikoodin avulla.
- Määrittää, onko merkkijono desimaaliluku.:
str.isdecimal()
- Sen määrittäminen, onko merkkijono numero:
str.isdigit()
- Määrittää, onko merkkijono numeroa edustava merkki.:
str.isnumeric()
- Määrittää, onko merkkijono aakkosellinen.:
str.isalpha()
- Määritetään, onko merkkijono aakkosnumeerinen.:
str.isalnum()
- Määrittää, ovatko merkkijonot ASCII-merkkejä.:
str.isascii()
- Tyhjän merkkijonon tuomio
- Määritä, voidaanko merkkijonot muuntaa numeroiksi.
Muissa metodeissa kuin isascii() merkkijono, joka sisältää tyhjän merkkijonon, seuraavat symbolit jne., on false.
,
.
-
-1.23, jne., numeerisena arvona selitetään tämän jakson lopussa.
Säännöllisten lausekkeiden avulla voidaan määrittää merkkityypit joustavammin ja poimia asiaankuuluvat merkkityypit.
Seuraavassa artikkelissa on lisätietoja siitä, miten seuraavat asiat määritetään.
- Kuinka muuntaa numeerinen merkkijono (str) numeroksi (int, float)?
- Miten määritetään isot ja pienet kirjaimet
- RELATED:Lukujonon muuntaminen numeeriseksi arvoksi Pythonissa
- RELATED:Luettelo merkkijonomenetelmistä, joilla voidaan manipuloida tapauksia Pythonissa
- Määrittää, onko merkkijono desimaaliluku.: str.isdecimal()
- Sen määrittäminen, onko merkkijono numero: str.isdigit()
- Määrittää, onko merkkijono numeroa edustava merkki.: str.isnumeric()
- Määrittää, onko merkkijono aakkosellinen.: str.isalpha()
- Määritetään, onko merkkijono aakkosnumeerinen.: str.isalnum()
- Määrittää, ovatko merkkijonot ASCII-merkkejä.: str.isascii()
- Tyhjän merkkijonon tuomio
- Määritä, voidaanko merkkijonot muuntaa numeroiksi.
Määrittää, onko merkkijono desimaaliluku.: str.isdecimal()
Isdecimal()-komento on tosi, jos kaikki merkit ovat desimaalilukuja eli Unicoden yleiseen luokkaan Nd kuuluvia merkkejä. Se on totta myös täysleveille arabialaisille numeroille jne.
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
Jos se sisältää symbolin, kuten miinusmerkin tai pisteen, se on väärä. Jos esimerkiksi haluat määrittää, että merkkijono, kuten '-1.23', on numeerinen arvo, voit käyttää poikkeuskäsittelyä. Tämä selitetään tämän jakson lopussa.
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
Sen määrittäminen, onko merkkijono numero: str.isdigit()
Isdigit()-kohdassa isdecimal()-kohdassa todellisten lukujen lisäksi todellisia ovat myös luvut, joiden Unicode-ominaisuuden arvo Numeric_Type on Digit tai Decimal.
Esimerkiksi neliötä kuvaava ylinumero on väärä isdecimal()-toiminnossa, mutta tosi isdigit()-toiminnossa.
- neliötä kuvaava ylinumero
- ²
- '\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äärittää, onko merkkijono numeroa edustava merkki.: str.isnumeric()
isnumeric()-kohdassa isdigit()-kohdassa todellisten lukujen lisäksi todellisia ovat myös luvut, joiden Unicode-ominaisuuden arvo Numeric_Type on Numeric.
Myös murtoluvut, roomalaiset numerot ja kiinalaiset numerot ovat totta.
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äärittää, onko merkkijono aakkosellinen.: str.isalpha()
Isalpha()-kohdassa Unicode general category -ominaisuus, jolla on jokin seuraavista ominaisuuksista, on tosi.
Lm
Lt
Lu
Ll
Lo
Aakkoset, kiinalaiset merkit jne. ovat totta.
s = 'abc'
print('s =', s)
print('isalpha:', s.isalpha())
# s = abc
# isalpha: True
s = '漢字'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 漢字
# isalpha: True
Arabialaiset numerot ovat vääriä, mutta kiinalaiset numerot ovat oikeita, koska ne ovat myös kiinalaisia merkkejä; kiinalaisten numeroiden nollat ovat kuitenkin vääriä.
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
Roomalaiset numerot ovat vääriä.
s = '\u2166'
print('s =', s)
print('isalpha:', s.isalpha())
# s = Ⅶ
# isalpha: False
Määritetään, onko merkkijono aakkosnumeerinen.: str.isalnum()
Kohdassa isalnum() on tosi, jos jokainen merkki on tosi jossakin seuraavista tähän mennessä luetelluista menetelmistä.
isdecimal()
isdigit()
isnumeric()
isalpha()
Jokainen merkki arvioidaan erikseen, joten kirjaimia ja numeroita sisältävä merkkijono on tosi isalnum()-metodissa, vaikka se olisi väärä kaikissa muissa metodeissa.
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äärittää, ovatko merkkijonot ASCII-merkkejä.: str.isascii()
Python 3.7 lisäsi isascii(). Se palauttaa arvon true, jos kaikki merkkijonon merkit ovat ASCII-merkkejä.
Numeroiden ja kirjainten lisäksi myös symbolit, kuten + ja -, ovat totta.
s = 'abc123+-,.&'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = abc123+-,.&
# isascii: True
# isalnum: False
Muut kuin ASCII-hiragana- ja muut merkit ovat vääriä.
s = 'あいうえお'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = あいうえお
# isascii: False
# isalnum: True
Kuten näemme seuraavaksi, toisin kuin muut metodit, isascii() palauttaa totuuden myös tyhjälle merkkijonolle.
Tyhjän merkkijonon tuomio
Tyhjä merkkijono on tosi isascii()-menetelmälle ja epätosi muille menetelmille.
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
Käytä bool()-toimintoa määrittääksesi, onko se tyhjä merkkijono. Paluuarvo on false, jos merkkijono on tyhjä, ja true, jos merkkijono on tyhjä.
print(bool(''))
# False
print(bool('abc123'))
# True
Määritä, voidaanko merkkijonot muuntaa numeroiksi.
Negatiiviset tai murtolukuiset merkkijonot sisältävät pisteitä tai miinusmerkkejä. Tämän vuoksi tulos on epätosi kaikilla menetelmillä paitsi isascii():lla.
Vaikka isascii() on tosi, se ei sovellu sen määrittämiseen, voidaanko merkkijono muuntaa numeeriseksi arvoksi, koska se on tosi, vaikka se sisältäisi muita symboleja tai aakkosmerkkejä.
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
Merkkijonot voidaan muuntaa liukuluvuiksi komennolla float(). Virhe merkkijonoille, joita ei voida muuntaa.
print(float('-1.23'))
# -1.23
print(type(float('-1.23')))
# <class 'float'>
# print(float('abc'))
# ValueError: could not convert string to float: 'abc'
Poikkeuskäsittelyn avulla voidaan määritellä funktio, joka palauttaa arvon true, kun merkkijono voidaan muuntaa funktiolla 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
Jos haluat määrittää, että pilkulla erotettu luku on myös tosi, käytä replace()-toimintoa pilkun poistamiseen (korvaa se tyhjällä merkkijonolla).
def is_num_delimiter(s):
try:
float(s.replace(',', ''))
except ValueError:
return False
else:
return True
print(is_num_delimiter('10,000,000'))
# True
Jos haluat tukea välilyöntien erottelua, voit käyttää lisäksi replace()-ohjelmaa.
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