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 ерөнхий ангиллын тэмдэгтүүд байвал үнэн болно. Энэ нь бүрэн өргөнтэй араб тоо гэх мэтийн хувьд ч үнэн юм.

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()-д үнэн байх тооноос гадна тоон_төрлийн Юникод өмчийн утга нь оронтой эсвэл аравтын тоонууд мөн үнэн байна.

Жишээлбэл, квадратыг илэрхийлэх дээд бичвэрийн тоо 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()-д үнэн байх тооноос гадна юникод тоон_төрөл тоон шинж чанарын утга нь Тоон гэсэн тоонууд мөн үнэн байна.

Бутархай, ром тоо, хятад тоо ч үнэн.

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()-д дараах зүйлсийн аль нэгийг агуулсан Юникод ерөнхий категорийн шинж чанар нь үнэн юм.

  • 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() ашиглана уу. Буцах утга нь хоосон мөрийн хувьд худал, өөрөөр хэлбэл үнэн байна.

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