ஒரு சரம் எண் அல்லது அகரவரிசையா என்பதை பைதான் தீர்மானிக்கிறது மற்றும் சரிபார்க்கிறது

வணிக

பைதான் ஒரு சரம் வகை எண் அல்லது அகரவரிசை என்பதை தீர்மானிக்க மற்றும் சரிபார்க்க பல சரம் முறைகளை வழங்குகிறது.

ஒவ்வொரு முறையும் மாதிரி குறியீடு மூலம் விளக்கப்பட்டுள்ளது.

  • சரம் ஒரு தசம இலக்கமா என்பதை தீர்மானிக்கிறது: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() இல் உண்மையாக இருக்கும் எண்களுக்கு கூடுதலாக, 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 எண்களாக இருக்கும் எண்களும் உண்மையாக இருக்கும்.

பின்னங்கள், ரோமன் எண்கள் மற்றும் சீன எண்களும் உண்மை.

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()

பைதான் 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

காற்புள்ளியால் பிரிக்கப்பட்ட எண்ணும் உண்மையா என்பதை நீங்கள் தீர்மானிக்க விரும்பினால், காற்புள்ளியை அகற்றுவதற்கு பதிலாக() ஐப் பயன்படுத்தவும் (அதை வெற்று சரத்துடன் மாற்றவும்).

def is_num_delimiter(s):
    try:
        float(s.replace(',', ''))
    except ValueError:
        return False
    else:
        return True

print(is_num_delimiter('10,000,000'))
# True

நீங்கள் வைட்ஸ்பேஸ் டிலிமிட்டேஷனை ஆதரிக்க விரும்பினால், நீங்கள் பதிலாக() மேலும் பயன்படுத்தலாம்.

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