Python nemtokake lan mriksa apa senar iku numerik utawa alfabet

Bisnis

Python nyedhiyakake sawetara cara senar kanggo nemtokake lan mriksa apa jinis senar iku numerik utawa alfabet.

Saben cara diterangake kanthi kode sampel.

  • Nemtokake manawa string minangka digit desimal:str.isdecimal()
  • Nemtokake yen senar minangka nomer:str.isdigit()
  • Nemtokake apa string minangka karakter sing makili nomer:str.isnumeric()
  • Nemtokake yen string iku alfabet:str.isalpha()
  • Temtokake yen string iku alfanumerik:str.isalnum()
  • Nemtokake apa strings minangka karakter ASCII:str.isascii()
  • Paukuman saka string kosong
  • Nemtokake yen strings bisa diowahi dadi angka

Kanggo cara liyane saka isascii (), senar sing ngemot senar kosong, simbol ing ngisor iki, etc., palsu.

  • ,
  • .
  • -

-1.23, etc., minangka nilai numerik diterangake ing mburi bagean iki.

Ekspresi reguler bisa digunakake kanggo nemtokake jinis karakter kanthi luwih fleksibel lan ngekstrak jinis karakter sing cocog.

Deleng artikel ing ngisor iki kanggo informasi luwih lengkap babagan carane nemtokake ing ngisor iki

  • Cara ngowahi string numerik (str) dadi angka (int, float)
  • Carane nemtokake huruf gedhe lan cilik

Nemtokake manawa string minangka digit desimal:str.isdecimal()

Ing isdecimal (), bener yen kabeh karakter minangka digit desimal, yaiku karakter ing kategori umum Nd Unicode. Iki uga bener kanggo angka Arab lengkap, lsp.

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

Yen ngemot simbol kayata tandha minus utawa titik, iku palsu. Contone, yen sampeyan pengin nemtokake manawa senar kayata ‘-1.23’ minangka nilai numerik, sampeyan bisa nggunakake pangecualian penanganan. Iki diterangake ing pungkasan bagean iki.

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

Nemtokake yen senar minangka nomer:str.isdigit()

Ing isdigit (), saliyane nomer sing bener ing isdecimal (), angka sing Unicode property Nilai Numeric_Type iku Digit utawa Decimal uga bener.

Contone, nomer superscript makili kothak palsu ing isdecimal () nanging bener ing isdigit ().

  • nomer superscript makili kothak
    • ²
    • \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

Nemtokake apa string minangka karakter sing makili nomer:str.isnumeric()

Ing isnumeric (), saliyane kanggo nomer sing bener ing isdigit (), angka sing Unicode property Nilai Numeric_Type iku Numeric uga bener.

Pecahan, angka Romawi, lan angka Cina uga bener.

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

Nemtokake yen string iku alfabet:str.isalpha()

Ing isalpha (), properti kategori umum Unicode karo salah siji saka ing ngisor iki bener.

  • Lm
  • Lt
  • Lu
  • Ll
  • Lo

Alfabet, aksara Cina, lan sapiturute bakal bener.

s = 'abc'
print('s =', s)
print('isalpha:', s.isalpha())
# s = abc
# isalpha: True

s = '漢字'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 漢字
# isalpha: True

Angka Arab iku palsu, nanging angka Cina bener amarga uga aksara Cina; Nanging, nul ing angka Cina iku palsu.

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

Angka Romawi palsu.

s = '\u2166'
print('s =', s)
print('isalpha:', s.isalpha())
# s = Ⅶ
# isalpha: False

Temtokake yen string iku alfanumerik:str.isalnum()

Ing isalnum (), iku bener yen saben karakter bener ing samubarang cara ing ngisor iki kadhaptar supaya adoh.

  • isdecimal()
  • isdigit()
  • isnumeric()
  • isalpha()

Saben karakter dievaluasi kanthi individu, supaya string sing ngemot huruf lan angka bakal bener ing isalnum () sanajan palsu ing kabeh cara liyane.

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

Nemtokake apa strings minangka karakter ASCII:str.isascii()

Python 3.7 ditambahake isascii (). Ngasilake bener yen kabeh karakter ing senar iku karakter ASCII.

Saliyane angka lan aksara, simbol kayata + lan – uga bener.

s = 'abc123+-,.&'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = abc123+-,.&
# isascii: True
# isalnum: False

Hiragana non-ASCII lan karakter liyane palsu.

s = 'あいうえお'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = あいうえお
# isascii: False
# isalnum: True

Kaya sing bakal kita deleng sabanjure, ora kaya metode liyane, isascii () ngasilake bener sanajan kanggo senar kosong.

Paukuman saka string kosong

String kosong bener kanggo isascii () lan palsu kanggo metode liyane.

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

Gunakake bool () kanggo nemtokake yen iku string kosong. Nilai bali palsu kanggo senar kosong lan bener.

print(bool(''))
# False

print(bool('abc123'))
# True

Nemtokake yen strings bisa diowahi dadi angka

String nilai negatif utawa pecahan ngemot titik utawa tandha minus. Mulane, asil palsu kanggo kabeh cara kajaba isascii ().

Senajan bener kanggo isascii (), iku ora cocok kanggo nemtokake apa senar bisa diowahi menyang Nilai numerik, awit iku bener malah yen ngandhut simbol liyane utawa karakter alfabet.

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

Strings bisa diowahi kanggo angka floating titik karo float (). Kesalahan kanggo senar sing ora bisa diowahi.

print(float('-1.23'))
# -1.23

print(type(float('-1.23')))
# <class 'float'>

# print(float('abc'))
# ValueError: could not convert string to float: 'abc'

Kanthi penanganan istiméwa, fungsi bisa ditetepake sing bali bener nalika senar bisa diowahi karo 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

Yen sampeyan pengin nemtokake manawa nomer sing dipisahake koma uga bener, gunakake ngganti () kanggo mbusak koma (ngganti nganggo string kosong).

def is_num_delimiter(s):
    try:
        float(s.replace(',', ''))
    except ValueError:
        return False
    else:
        return True

print(is_num_delimiter('10,000,000'))
# True

Yen sampeyan pengin ndhukung delimitasi spasi putih, sampeyan bisa nggunakake ngganti () luwih.

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
Copied title and URL