Python вызначае і правярае, лікавы або алфавітны радок

Бізнэс

Python дае некалькі метадаў радка, каб вызначыць і праверыць, ці з’яўляецца тып радка лікавым або алфавітным.

Кожны метад тлумачыцца з прыкладам кода.

  • Вызначае, ці з’яўляецца радок дзесятковай лічбай:str.isdecimal()
  • Вызначэнне таго, ці з’яўляецца радок лікам:str.isdigit()
  • Вызначае, ці з’яўляецца радок сімвалам, які прадстаўляе лік:str.isnumeric()
  • Вызначае, ці з’яўляецца радок алфавітным:str.isalpha()
  • Вызначце, ці з’яўляецца радок літарна-лічбавым:str.isalnum()
  • Вызначае, ці з’яўляюцца радкі сімваламі ASCII:str.isascii()
  • Меркаванне пустой радкі
  • Вызначце, ці можна радкі пераўтварыць у лікі

Для іншых метадаў, чым isascii(), радок, які змяшчае пусты радок, наступныя сімвалы і г.д., з’яўляецца ілжывым.

  • ,
  • .
  • -

-1,23 і г.д., у якасці лікавага значэння тлумачыцца ў канцы гэтага раздзела.

Рэгулярныя выразы можна выкарыстоўваць для больш гнуткага вызначэння тыпаў сімвалаў і для вылучэння адпаведных тыпаў сімвалаў.

Глядзіце наступны артыкул для атрымання дадатковай інфармацыі аб тым, як вызначыць наступнае

  • Як пераўтварыць лікавы радок (str) у лік (int, float)
  • Як вызначыць верхні і ніжні рэгістр

Вызначае, ці з’яўляецца радок дзесятковай лічбай: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
Copied title and URL