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() میں درست ہیں، وہ نمبر جن کی یونیکوڈ پراپرٹی ویلیو Numeric_Type Digit یا decimal ہے وہ بھی درست ہیں۔

مثال کے طور پر، مربع کی نمائندگی کرنے والا سپر اسکرپٹ نمبر 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() میں درست ہیں، وہ نمبر جن کی یونیکوڈ پراپرٹی ویلیو 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()

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