পাইথন একটি স্ট্রিং সাংখ্যিক বা বর্ণানুক্রমিক কিনা তা নির্ধারণ করে এবং পরীক্ষা করে

ব্যবসায়

একটি স্ট্রিং টাইপ সংখ্যাসূচক বা বর্ণানুক্রমিক কিনা তা নির্ধারণ এবং পরীক্ষা করার জন্য পাইথন বিভিন্ন স্ট্রিং পদ্ধতি প্রদান করে।

প্রতিটি পদ্ধতি নমুনা কোড দিয়ে ব্যাখ্যা করা হয়.

  • একটি স্ট্রিং একটি দশমিক সংখ্যা কিনা তা নির্ধারণ করে: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 ডিজিট বা দশমিক।

উদাহরণস্বরূপ, একটি সুপারস্ক্রিপ্ট সংখ্যা একটি বর্গকে প্রতিনিধিত্ব করে 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

আপনি যদি হোয়াইটস্পেস সীমাবদ্ধতা সমর্থন করতে চান তবে আপনি আরও রিপ্লেস() ব্যবহার করতে পারেন।

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