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