Python дае некалькі метадаў радка, каб вызначыць і праверыць, ці з’яўляецца тып радка лікавым або алфавітным.
Кожны метад тлумачыцца з прыкладам кода.
- Вызначае, ці з’яўляецца радок дзесятковай лічбай:
str.isdecimal()
- Вызначэнне таго, ці з’яўляецца радок лікам:
str.isdigit()
- Вызначае, ці з’яўляецца радок сімвалам, які прадстаўляе лік:
str.isnumeric()
- Вызначае, ці з’яўляецца радок алфавітным:
str.isalpha()
- Вызначце, ці з’яўляецца радок літарна-лічбавым:
str.isalnum()
- Вызначае, ці з’яўляюцца радкі сімваламі ASCII:
str.isascii()
- Меркаванне пустой радкі
- Вызначце, ці можна радкі пераўтварыць у лікі
Для іншых метадаў, чым isascii(), радок, які змяшчае пусты радок, наступныя сімвалы і г.д., з’яўляецца ілжывым.
,
.
-
-1,23 і г.д., у якасці лікавага значэння тлумачыцца ў канцы гэтага раздзела.
Рэгулярныя выразы можна выкарыстоўваць для больш гнуткага вызначэння тыпаў сімвалаў і для вылучэння адпаведных тыпаў сімвалаў.
Глядзіце наступны артыкул для атрымання дадатковай інфармацыі аб тым, як вызначыць наступнае
- Як пераўтварыць лікавы радок (str) у лік (int, float)
- Як вызначыць верхні і ніжні рэгістр
- па тэме:Пераўтварэнне радка лікаў у лікавыя значэнні ў Python
- па тэме:Спіс метадаў радкоў для маніпулявання рэгістрам у Python
- Вызначае, ці з’яўляецца радок дзесятковай лічбай:str.isdecimal()
- Вызначэнне таго, ці з’яўляецца радок лікам:str.isdigit()
- Вызначае, ці з’яўляецца радок сімвалам, які прадстаўляе лік:str.isnumeric()
- Вызначае, ці з’яўляецца радок алфавітным:str.isalpha()
- Вызначце, ці з’яўляецца радок літарна-лічбавым:str.isalnum()
- Вызначае, ці з’яўляюцца радкі сімваламі ASCII:str.isascii()
- Меркаванне пустой радкі
- Вызначце, ці можна радкі пераўтварыць у лікі
Вызначае, ці з’яўляецца радок дзесятковай лічбай:str.isdecimal()
У isdecimal() гэта праўда, калі ўсе сімвалы з’яўляюцца дзесятковымі лічбамі, гэта значыць сімваламі агульнай катэгорыі Nd Unicode. Гэта таксама дакладна для арабскіх лічбаў на поўную шырыню і г.д.
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
Калі ён утрымлівае такі сімвал, як знак мінус або кропку, гэта ілжыва. Напрыклад, калі вы хочаце вызначыць, што радок, напрыклад ‘-1.23’, з’яўляецца лікавым значэннем, вы можаце выкарыстоўваць апрацоўку выключэнняў. Гэта тлумачыцца ў канцы гэтага раздзела.
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
Вызначэнне таго, ці з’яўляецца радок лікам:str.isdigit()
У isdigit() у дадатак да лікаў, якія з’яўляюцца сапраўднымі ў isdecimal(), лічбы, значэнне ўласцівасці Unicode для якіх Numeric_Type роўна лічбам або дзесятковым.
Напрыклад, надрадковы лік, які прадстаўляе квадрат, з’яўляецца ілжывым у isdecimal(), але сапраўдным у isdigit().
- надрадковы лік, які прадстаўляе квадрат
- ²
- \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
Вызначае, ці з’яўляецца радок сімвалам, які прадстаўляе лік:str.isnumeric()
У isnumeric(), у дадатак да лікаў, якія з’яўляюцца ісцінымі ў isdigit(), лічбы, значэнне ўласцівасці Unicode для якіх Numeric_Type роўна Numeric.
Дробы, рымскія лічбы і кітайскія лічбы таксама верныя.
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
Вызначае, ці з’яўляецца радок алфавітным:str.isalpha()
У isalpha() ўласцівасць агульнай катэгорыі Unicode з адным з наступных з’яўляецца праўдзівым.
Lm
Lt
Lu
Ll
Lo
Будзе праўдзівы алфавіт, кітайскія іерогліфы і г.д.
s = 'abc'
print('s =', s)
print('isalpha:', s.isalpha())
# s = abc
# isalpha: True
s = '漢字'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 漢字
# isalpha: True
Арабскія лічбы з’яўляюцца ілжывымі, але кітайскія лічбы сапраўдныя, таму што яны таксама з’яўляюцца кітайскімі іерогліфамі; аднак нулі ў кітайскіх лічбах ілжывыя.
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
Рымскія лічбы ілжывыя.
s = '\u2166'
print('s =', s)
print('isalpha:', s.isalpha())
# s = Ⅶ
# isalpha: False
Вызначце, ці з’яўляецца радок літарна-лічбавым:str.isalnum()
У isalnum() гэта праўда, калі кожны сімвал праўдзівы ў любым з наступных метадаў, пералічаных да гэтага часу.
isdecimal()
isdigit()
isnumeric()
isalpha()
Кожны сімвал ацэньваецца асобна, таму радок, які змяшчае літары і лічбы, будзе праўдзівым у isalnum(), нават калі ва ўсіх іншых метадах ілжывы.
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
Вызначае, ці з’яўляюцца радкі сімваламі ASCII:str.isascii()
У Python 3.7 дададзены isascii(). Ён вяртае праўду, калі ўсе сімвалы ў радку з’яўляюцца сімваламі ASCII.
У дадатак да лічбаў і літар, такія сімвалы, як + і – таксама сапраўдныя.
s = 'abc123+-,.&'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = abc123+-,.&
# isascii: True
# isalnum: False
Не-ASCII хірагана і іншыя сімвалы з’яўляюцца ілжывымі.
s = 'あいうえお'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = あいうえお
# isascii: False
# isalnum: True
Як мы ўбачым далей, у адрозненне ад іншых метадаў, isascii() вяртае праўду нават для пустога радка.
Меркаванне пустой радкі
Пустая радок праўдзівая для isascii() і ілжыва для іншых метадаў.
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
Выкарыстоўвайце bool(), каб вызначыць, ці з’яўляецца гэта пустым радком. Вяртанае значэнне з’яўляецца false для пустога радка і праўдзівым у адваротным выпадку.
print(bool(''))
# False
print(bool('abc123'))
# True
Вызначце, ці можна радкі пераўтварыць у лікі
Радкі адмоўнага або дробнага значэння ўтрымліваюць кропкі або знакі мінус. Такім чынам, вынік з’яўляецца ілжывым для ўсіх метадаў, акрамя isascii().
Нягледзячы на тое, што гэта дакладна для isascii(), ён не падыходзіць для вызначэння таго, ці можна пераўтварыць радок у лікавае значэнне, паколькі ён праўдзівы, нават калі змяшчае іншыя сімвалы або алфавітныя сімвалы.
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
Радкі можна пераўтварыць у лікі з плаваючай кропкай з дапамогай float(). Памылка для радкоў, якія нельга пераўтварыць.
print(float('-1.23'))
# -1.23
print(type(float('-1.23')))
# <class 'float'>
# print(float('abc'))
# ValueError: could not convert string to float: 'abc'
З дапамогай апрацоўкі выключэнняў можна вызначыць функцыю, якая вяртае праўду, калі радок можа быць пераўтвораны з дапамогай 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
Калі вы хочаце вызначыць, што лік, падзелены коскамі, таксама адпавядае рэчаіснасці, выкарыстоўвайце replace(), каб выдаліць коску (заменіце яе пустым радком).
def is_num_delimiter(s):
try:
float(s.replace(',', ''))
except ValueError:
return False
else:
return True
print(is_num_delimiter('10,000,000'))
# True
Калі вы хочаце падтрымаць размежаванне прабелаў, вы можаце выкарыстоўваць replace() далей.
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