पाइथनले स्ट्रिङ संख्यात्मक वा वर्णमाला हो कि भनेर निर्धारण गर्छ र जाँच गर्छ

व्यापार

पाइथनले स्ट्रिङ प्रकार संख्यात्मक वा वर्णमाला हो कि भनेर निर्धारण गर्न र जाँच गर्न धेरै स्ट्रिङ विधिहरू प्रदान गर्दछ।

प्रत्येक विधि नमूना कोड संग व्याख्या गरिएको छ।

  • स्ट्रिङ दशमलव अंक हो कि होइन भनेर निर्धारण गर्छ:str.isdecimal()
  • यदि स्ट्रिङ संख्या हो भने निर्धारण गर्दै:str.isdigit()
  • स्ट्रिङले संख्या प्रतिनिधित्व गर्ने क्यारेक्टर हो कि होइन भनेर निर्धारण गर्छ:str.isnumeric()
  • स्ट्रिङ वर्णमाला हो भने निर्धारण गर्छ:str.isalpha()
  • यदि स्ट्रिङ अल्फान्यूमेरिक हो भने निर्धारण गर्नुहोस्:str.isalnum()
  • स्ट्रिङहरू ASCII वर्णहरू हुन् कि छैनन् भनी निर्धारण गर्दछ:str.isascii()
  • खाली स्ट्रिङको निर्णय
  • यदि स्ट्रिङहरू संख्यामा रूपान्तरण गर्न सकिन्छ भने निर्धारण गर्नुहोस्

isascii() बाहेकका अन्य विधिहरूको लागि, खाली स्ट्रिङ, निम्न प्रतीकहरू, आदि समावेश भएको स्ट्रिङ गलत छ।

  • ,
  • .
  • -

-1.23, आदि, संख्यात्मक मानको रूपमा यस खण्डको अन्त्यमा व्याख्या गरिएको छ।

क्यारेक्टरका प्रकारहरू थप लचिलो रूपमा निर्धारण गर्न र सान्दर्भिक क्यारेक्टर प्रकारहरू निकाल्न नियमित अभिव्यक्तिहरू प्रयोग गर्न सकिन्छ।

निम्न कसरी निर्धारण गर्ने ’bout थप जानकारीको लागि निम्न लेख हेर्नुहोस्

  • संख्यात्मक स्ट्रिङ (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

अरबी अंकहरू गलत छन्, तर चिनियाँ अंकहरू सत्य छन् ’cause तिनीहरू पनि चिनियाँ वर्णहरू हुन्; यद्यपि, चिनियाँ अंकहरूमा शून्यहरू गलत छन्।

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 क्यारेक्टरहरू छन् भने यो true फर्काउँछ।

संख्या र अक्षरहरूको अतिरिक्त, + र – जस्ता प्रतीकहरू पनि सत्य हुन्।

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

स्ट्रिङहरू फ्लोट () को साथ फ्लोटिंग बिन्दु नम्बरहरूमा रूपान्तरण गर्न सकिन्छ। रूपान्तरण गर्न नसकिने स्ट्रिङहरूको लागि त्रुटि।

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
Copied title and URL