पायथन निर्धारित करता है और जांचता है कि क्या एक स्ट्रिंग संख्यात्मक या वर्णमाला है

व्यापार

पायथन यह निर्धारित करने और जांचने के लिए कई स्ट्रिंग विधियाँ प्रदान करता है कि क्या एक स्ट्रिंग प्रकार संख्यात्मक या वर्णानुक्रमिक है।

प्रत्येक विधि को नमूना कोड के साथ समझाया गया है।

  • निर्धारित करता है कि क्या एक स्ट्रिंग एक दशमलव अंक है: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()

पायथन 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

यह निर्धारित करने के लिए कि क्या यह एक खाली स्ट्रिंग है, बूल () का उपयोग करें। वापसी मान एक खाली स्ट्रिंग के लिए गलत है और अन्यथा सत्य है।

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

स्ट्रिंग्स को फ्लोट () के साथ फ्लोटिंग पॉइंट नंबरों में बदला जा सकता है। स्ट्रिंग्स के लिए त्रुटि जिसे परिवर्तित नहीं किया जा सकता है।

print(float('-1.23'))
# -1.23

print(type(float('-1.23')))
# <class 'float'>

# print(float('abc'))
# ValueError: could not convert string to float: 'abc'

अपवाद हैंडलिंग के साथ, एक फ़ंक्शन को परिभाषित किया जा सकता है जो एक स्ट्रिंग को फ्लोट() के साथ परिवर्तित किए जाने पर सत्य लौटाता है।

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