Python hutoa njia kadhaa za kamba kuamua na kuangalia ikiwa aina ya kamba ni nambari au alfabeti.
Kila njia inaelezewa na nambari ya sampuli.
- Huamua kama mfuatano ni tarakimu ya desimali:
str.isdecimal()
- Kuamua kama mfuatano ni nambari:
str.isdigit()
- Huamua kama mfuatano ni herufi inayowakilisha nambari:
str.isnumeric()
- Huamua kama mfuatano ni wa alfabeti:
str.isalpha()
- Amua ikiwa mfuatano ni wa alphanumeric:
str.isalnum()
- Huamua ikiwa mifuatano ni vibambo vya ASCII:
str.isascii()
- Hukumu ya kamba tupu
- Amua ikiwa mifuatano inaweza kubadilishwa kuwa nambari
Kwa mbinu zingine isipokuwa isascii(), mfuatano ulio na mfuatano tupu, alama zifuatazo, n.k., si kweli.
,
.
-
-1.23, nk, kama thamani ya nambari inavyofafanuliwa mwishoni mwa sehemu hii.
Semi za kawaida zinaweza kutumiwa kubainisha aina za wahusika kwa urahisi zaidi na kutoa aina za wahusika husika.
Tazama nakala ifuatayo kwa habari zaidi juu ya jinsi ya kuamua yafuatayo
- Jinsi ya kubadilisha kamba ya nambari (str) kuwa nambari (int, kuelea)
- Jinsi ya kuamua kesi ya juu na ya chini
- INAYOHUSIANA:Kubadilisha safu ya nambari kuwa nambari za nambari kwenye Python
- INAYOHUSIANA:Orodha ya njia za kamba za kudhibiti kesi kwenye Python
- Huamua kama mfuatano ni tarakimu ya desimali:str.isdecimal()
- Kuamua kama mfuatano ni nambari:str.isdigit()
- Huamua kama mfuatano ni herufi inayowakilisha nambari:str.isnumeric()
- Huamua kama mfuatano ni wa alfabeti:str.isalpha()
- Amua ikiwa mfuatano ni wa alphanumeric:str.isalnum()
- Huamua ikiwa mifuatano ni vibambo vya ASCII:str.isascii()
- Hukumu ya kamba tupu
- Amua ikiwa mifuatano inaweza kubadilishwa kuwa nambari
Huamua kama mfuatano ni tarakimu ya desimali:str.isdecimal()
Katika isdecimal(), ni kweli ikiwa herufi zote ni tarakimu za desimali, yaani, wahusika katika kategoria ya jumla Nd ya Unicode. Pia ni kweli kwa nambari za upana kamili za Kiarabu, nk.
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
Ikiwa ina ishara kama vile ishara ya kuondoa au kipindi, si kweli. Kwa mfano, ikiwa ungependa kubainisha kuwa mfuatano kama vile ‘-1.23’ ni thamani ya nambari, unaweza kutumia ushughulikiaji wa ubaguzi. Hii imeelezwa mwishoni mwa sehemu hii.
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
Kuamua kama mfuatano ni nambari:str.isdigit()
Katika isdigit(), pamoja na nambari ambazo ni kweli katika isdecimal(), nambari ambazo thamani ya sifa ya Unicode Numeric_Type ni Digit au Desimali pia ni kweli.
Kwa mfano, nambari ya maandishi ya juu inayowakilisha mraba ni ya uwongo katika isdecimal() lakini ni kweli katika isdigit().
- nambari ya maandishi ya juu inayowakilisha mraba
- ²
- \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
Huamua kama mfuatano ni herufi inayowakilisha nambari:str.isnumeric()
Katika isnumeric(), pamoja na nambari ambazo ni kweli katika isdigit(), nambari ambazo thamani ya sifa ya Unicode Numeric_Type ni Nambari pia ni kweli.
Sehemu, nambari za Kirumi, na nambari za Kichina pia ni za kweli.
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
Huamua kama mfuatano ni wa alfabeti:str.isalpha()
Katika isalpha(), mali ya kitengo cha jumla cha Unicode na moja ya yafuatayo ni kweli.
Lm
Lt
Lu
Ll
Lo
Alfabeti, herufi za Kichina, n.k. zitakuwa kweli.
s = 'abc'
print('s =', s)
print('isalpha:', s.isalpha())
# s = abc
# isalpha: True
s = '漢字'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 漢字
# isalpha: True
Nambari za Kiarabu ni za uwongo, lakini nambari za Kichina ni za kweli kwa sababu pia ni herufi za Kichina; hata hivyo, sifuri katika nambari za Kichina ni za uwongo.
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
Nambari za Kirumi ni za uwongo.
s = '\u2166'
print('s =', s)
print('isalpha:', s.isalpha())
# s = Ⅶ
# isalpha: False
Amua ikiwa mfuatano ni wa alphanumeric:str.isalnum()
Katika isalnum(), ni kweli ikiwa kila mhusika ni kweli katika mojawapo ya njia zifuatazo zilizoorodheshwa hadi sasa.
isdecimal()
isdigit()
isnumeric()
isalpha()
Kila herufi hutathminiwa kibinafsi, kwa hivyo mfuatano ulio na herufi na nambari utakuwa wa kweli katika isalnum() hata kama sivyo katika mbinu zingine zote.
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
Huamua ikiwa mifuatano ni vibambo vya ASCII:str.isascii()
Python 3.7 imeongezwa isascii(). Inarudi kuwa kweli ikiwa herufi zote kwenye mfuatano ni herufi za ASCII.
Mbali na nambari na herufi, alama kama vile + na – pia ni kweli.
s = 'abc123+-,.&'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = abc123+-,.&
# isascii: True
# isalnum: False
Hiragana zisizo za ASCII na wahusika wengine ni za uwongo.
s = 'あいうえお'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = あいうえお
# isascii: False
# isalnum: True
Kama tutakavyoona ijayo, tofauti na njia zingine, isascii() inarudi kweli hata kwa kamba tupu.
Hukumu ya kamba tupu
Kamba tupu ni kweli kwa isascii() na si kweli kwa njia zingine.
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
Tumia bool() kuamua ikiwa ni kamba tupu. Thamani ya kurejesha si kweli kwa mfuatano tupu na sivyo vinginevyo.
print(bool(''))
# False
print(bool('abc123'))
# True
Amua ikiwa mifuatano inaweza kubadilishwa kuwa nambari
Mifuatano ya thamani hasi au sehemu ina nukta au ishara za kutoa. Kwa hivyo, matokeo ni ya uwongo kwa njia zote isipokuwa isascii().
Ingawa ni kweli kwa isascii(), haifai kubainisha ikiwa mfuatano unaweza kubadilishwa kuwa thamani ya nambari, kwa kuwa ni kweli hata ikiwa ina alama nyingine au herufi za alfabeti.
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
Kamba zinaweza kubadilishwa kuwa nambari za sehemu zinazoelea na kuelea (). Hitilafu kwa mifuatano ambayo haiwezi kubadilishwa.
print(float('-1.23'))
# -1.23
print(type(float('-1.23')))
# <class 'float'>
# print(float('abc'))
# ValueError: could not convert string to float: 'abc'
Isipokuwa na utunzaji wa kipekee, chaguo za kukokotoa zinaweza kufafanuliwa ambazo hurejesha ukweli wakati kamba inaweza kubadilishwa na kuelea ().
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
Ikiwa unataka kubainisha kuwa nambari iliyotenganishwa kwa koma pia ni kweli, tumia replace() kuondoa koma (ibadilishe kwa mfuatano tupu).
def is_num_delimiter(s):
try:
float(s.replace(',', ''))
except ValueError:
return False
else:
return True
print(is_num_delimiter('10,000,000'))
# True
Ikiwa ungependa kuauni uwekaji mipaka wa nafasi nyeupe, unaweza kutumia replace() zaidi.
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