Python sətir növünün ədədi və ya əlifba olduğunu müəyyən etmək və yoxlamaq üçün bir neçə sətir metodu təqdim edir.
Hər bir üsul nümunə kodu ilə izah olunur.
- Sətirin onluq rəqəm olub-olmadığını müəyyən edir:
str.isdecimal()
- Sətin ədəd olub-olmadığını müəyyən etmək:
str.isdigit()
- Sətin rəqəmi təmsil edən simvol olub-olmadığını müəyyən edir:
str.isnumeric()
- Sətirin əlifba sırası olub olmadığını müəyyən edir:
str.isalpha()
- Sətin alfasayısal olub olmadığını müəyyənləşdirin:
str.isalnum()
- Sətirlərin ASCII simvolu olub olmadığını müəyyən edir:
str.isascii()
- Boş ipin hökmü
- Sətirlərin rəqəmlərə çevrilə biləcəyini müəyyənləşdirin
isascii()-dən başqa üsullar üçün boş sətir, aşağıdakı simvollar və s. ehtiva edən sətir yanlışdır.
,
.
-
-1.23 və s. kimi ədədi qiymət bu bölmənin sonunda izah olunur.
Simvol tiplərini daha çevik müəyyən etmək və müvafiq simvol növlərini çıxarmaq üçün müntəzəm ifadələrdən istifadə edilə bilər.
Aşağıdakıları necə təyin etmək barədə ətraflı məlumat üçün aşağıdakı məqaləyə baxın
- Rəqəm sətrini (str) rəqəmə (int, float) necə çevirmək olar
- Böyük və kiçik hərfi necə təyin etmək olar
- ƏLAQƏLİ:Python-da ədədlər sətirinin ədədi dəyərlərə çevrilməsi
- ƏLAQƏLİ:Python-da işi manipulyasiya etmək üçün sətir üsullarının siyahısı
- Sətirin onluq rəqəm olub-olmadığını müəyyən edir:str.isdecimal()
- Sətin ədəd olub-olmadığını müəyyən etmək:str.isdigit()
- Sətin rəqəmi təmsil edən simvol olub-olmadığını müəyyən edir:str.isnumeric()
- Sətirin əlifba sırası olub olmadığını müəyyən edir:str.isalpha()
- Sətin alfasayısal olub olmadığını müəyyənləşdirin:str.isalnum()
- Sətirlərin ASCII simvolu olub olmadığını müəyyən edir:str.isascii()
- Boş ipin hökmü
- Sətirlərin rəqəmlərə çevrilə biləcəyini müəyyənləşdirin
Sətirin onluq rəqəm olub-olmadığını müəyyən edir:str.isdecimal()
isdecimal() funksiyasında bütün simvollar onluq rəqəmlər, yəni Unicode-un Nd ümumi kateqoriyasındakı simvollar olduqda doğrudur. Bu, tam enli ərəb rəqəmləri və s. üçün də doğrudur.
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
Əgər onun tərkibində mənfi işarə və ya nöqtə kimi simvol varsa, bu yanlışdır. Məsələn, ‘-1.23’ kimi sətrin ədədi dəyər olduğunu müəyyən etmək istəyirsinizsə, istisnaların idarə edilməsindən istifadə edə bilərsiniz. Bu, bu bölmənin sonunda izah olunur.
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
Sətin ədəd olub-olmadığını müəyyən etmək:str.isdigit()
isdigit() funksiyasında isdecimal() funksiyasında doğru olan ədədlərə əlavə olaraq Unicode xassə dəyəri Rəqəm və Ondalıq olan ədədlər də doğrudur.
Məsələn, kvadratı təmsil edən yuxarı işarə nömrəsi isdecimal()-da yalan, isdigit()-də isə doğrudur.
- kvadratı təmsil edən yuxarı işarə nömrəsi
- ²
- \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
Sətin rəqəmi təmsil edən simvol olub-olmadığını müəyyən edir:str.isnumeric()
isnumeric() funksiyasında isdigit() funksiyasında doğru olan ədədlərə əlavə olaraq Unicode xassə dəyəri Numeric_Type Numeric olan ədədlər də doğrudur.
Kəsrlər, Roma rəqəmləri və Çin rəqəmləri də doğrudur.
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
Sətirin əlifba sırası olub olmadığını müəyyən edir:str.isalpha()
isalpha()-da aşağıdakılardan biri ilə Unicode ümumi kateqoriya xüsusiyyəti doğrudur.
Lm
Lt
Lu
Ll
Lo
Əlifba, Çin simvolları və s. doğru olacaq.
s = 'abc'
print('s =', s)
print('isalpha:', s.isalpha())
# s = abc
# isalpha: True
s = '漢字'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 漢字
# isalpha: True
Ərəb rəqəmləri yanlışdır, lakin Çin rəqəmləri doğrudur, çünki onlar da Çin simvollarıdır; lakin Çin rəqəmlərindəki sıfırlar yanlışdır.
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
Roma rəqəmləri yanlışdır.
s = '\u2166'
print('s =', s)
print('isalpha:', s.isalpha())
# s = Ⅶ
# isalpha: False
Sətin alfasayısal olub olmadığını müəyyənləşdirin:str.isalnum()
isalnum()-da hər bir simvol indiyə qədər sadalanan aşağıdakı metodlardan hər hansı birində doğrudursa, bu doğrudur.
isdecimal()
isdigit()
isnumeric()
isalpha()
Hər bir simvol fərdi olaraq qiymətləndirilir, ona görə də hərf və rəqəmlərdən ibarət sətir isalnum()-da bütün digər metodlarda yalan olsa belə doğru olacaq.
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
Sətirlərin ASCII simvolu olub olmadığını müəyyən edir:str.isascii()
Python 3.7 isascii () əlavə etdi. Sətirdəki bütün simvollar ASCII simvollarıdırsa, bu doğru qaytarır.
Rəqəmlər və hərflərlə yanaşı, + və – kimi simvollar da doğrudur.
s = 'abc123+-,.&'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = abc123+-,.&
# isascii: True
# isalnum: False
ASCII olmayan hiragana və digər simvollar yanlışdır.
s = 'あいうえお'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = あいうえお
# isascii: False
# isalnum: True
Sonra görəcəyimiz kimi, digər üsullardan fərqli olaraq, isascii() hətta boş sətir üçün də doğru qaytarır.
Boş ipin hökmü
Boş sətir isascii() üçün doğrudur, digər üsullar üçün isə false.
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
Bunun boş bir sətir olub olmadığını müəyyən etmək üçün bool() istifadə edin. Qaytarılan dəyər boş sətir üçün false, əks halda isə doğrudur.
print(bool(''))
# False
print(bool('abc123'))
# True
Sətirlərin rəqəmlərə çevrilə biləcəyini müəyyənləşdirin
Mənfi və ya kəsr dəyər sətirlərində nöqtələr və ya mənfi işarələr var. Buna görə də isascii() istisna olmaqla, bütün metodlar üçün nəticə yanlışdır.
isascii() üçün doğru olsa da, sətrin ədədi dəyərə çevrilib-çevrilə bilməyəcəyini müəyyən etmək üçün uyğun deyil, çünki o, digər simvolları və ya əlifba simvollarını ehtiva etsə belə, doğrudur.
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
Sətirlər float() ilə üzən nöqtəli nömrələrə çevrilə bilər. Çevrilə bilməyən sətirlər üçün xəta.
print(float('-1.23'))
# -1.23
print(type(float('-1.23')))
# <class 'float'>
# print(float('abc'))
# ValueError: could not convert string to float: 'abc'
İstisna ilə işləmə ilə, sətir float() ilə çevrilə bildikdə doğru qaytaran funksiya müəyyən edilə bilər.
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
Vergüllə ayrılmış nömrənin də doğru olduğunu müəyyən etmək istəyirsinizsə, vergülü silmək üçün replace() funksiyasından istifadə edin (onu boş sətirlə əvəz edin).
def is_num_delimiter(s):
try:
float(s.replace(',', ''))
except ValueError:
return False
else:
return True
print(is_num_delimiter('10,000,000'))
# True
Boşluğun delimitasiyasına dəstək vermək istəyirsinizsə, daha sonra replace() funksiyasından istifadə edə bilərsiniz.
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