2013-09-06 10 views
29

मैं यह जांचने की कोशिश कर रहा हूं कि स्ट्रिंग में केवल अक्षर हैं, न कि अंकों या प्रतीकों।मैं कैसे जांच सकता हूं कि स्ट्रिंग में केवल पायथन में अक्षर हैं या नहीं?

उदाहरण के लिए:

>>> only_letters("hello") 
True 
>>> only_letters("he7lo") 
False 

उत्तर

11

str.isalpha() समारोह काम करता है। अर्थात।

if my_string.isalpha(): 
    print('it is letters') 
54

सरल:

if string.isalpha(): 
    print("It's all letters") 

str.isalpha() ही सच्चा अगर सभी पत्र स्ट्रिंग में वर्णों हैं:

वापसी अगर सही है स्ट्रिंग में सभी पात्रों वर्णमाला कर रहे हैं और वहाँ है कम से कम एक चरित्र, अन्यथा झूठा।

डेमो:

>>> 'hello'.isalpha() 
True 
>>> '42hello'.isalpha() 
False 
>>> 'hel lo'.isalpha() 
False 
+10

नोट: पायथन 2 में, यह यूनिकोड जागरूक नहीं है इसलिए "" ä ".isalpha()' गलत है। हालांकि, python3 '' ä ".isalpha() 'में सत्य है, क्योंकि python3 में यूनिकोड तार डिफ़ॉल्ट रूप से है। – Squidly

+0

@MrBones: पायथन 2 में, यदि मायने रखता है तो 'यूनिकोड' ऑब्जेक्ट का उपयोग करें। –

+0

हाँ, मैं इसे अनजाने पाठकों के लिए अतिरिक्त उपयोगी जानकारी के रूप में जोड़ रहा था – Squidly

5

string.isalpha() समारोह आप के लिए काम करेंगे।

import re 

def only_letters(tested_string): 
    match = re.match("^[ABCDEFGHJKLM]*$", tested_string) 
    return match is not None 
6

देखें जो पता करने के लिए चाहते हो सकता है अगर एक स्ट्रिंग सभी पत्र का केवल एक सबसेट शामिल गूगल के जरिये इस सवाल खोजने लोगों के लिए, मैं regexes उपयोग करने की अनुशंसा (अजगर 3)

def only_letters(tested_string): 
     for letter in tested_string: 
      if not letter in "abcdefghjklmnopqrstuvwxyz": 
       return False 
     return True 

आप स्ट्रिंग आप यदि आप रिक्त स्थान की अनुमति दी जा करना चाहते हैं के खिलाफ जाँच कर रहे हैं में एक अंतरिक्ष जोड़ सकते हैं: के साथ आया था।

+5

नाइटपिकिंग जाने के लिए खेद है, लेकिन आपके उदाहरण में रेगेक्स भी '^ [ए-एचजे-एम] * $' हो सकता है, जो मेरी राय में अधिक पठनीय है । – Petzku

-1

एक बहुत सरल समाधान मैं:

http://www.tutorialspoint.com/python/string_isalpha.htm

+0

यदि पत्र * नहीं * "abcdefghjklmnopqrstuvwxyz" – Guibod

+0

में आप एक I खो रहे हैं, और ठीक से उपयोग नहीं करते हैं: 'अगर अक्षर ** ** ** में" abcdefgh ** i ** jklmnopqrstuvwxyz "' – Guibod

+0

शायद आप चाहें 'if letter.lower() ... का उपयोग करने के लिए, जैसा कि है, अपरकेस अक्षरों की गणना नहीं होगी। 'स्ट्रिंग' मॉड्यूल में वर्णमाला में सभी अक्षरों के लिए पूर्वनिर्धारित एक चर भी है। वास्तव में, तीन हैं: अपरकेस, लोअरकेस, और दोनों के लिए। बेशक, सरल समाधान पहले ही ऊपर दिया गया है: 'इस्लाफा'। – zondo

4

ऐसा लगता है कि लोग str.isalpha का उपयोग करने के लिए कह रहे हैं।

यह जांचने के लिए एक पंक्ति कार्य है कि सभी वर्ण पत्र हैं या नहीं।

def only_letters(string): 
    return all(letter.isalpha() for letter in string) 

all बूलियन्स का एक iterable स्वीकार करता है, और True रिटर्न iff बूलियन्स के सभी True हैं।

आम तौर पर, all रिटर्न True अगर में अपने iterable True पर विचार किया जाएगा वस्तुओं। (: len(list) == 0 यानी)

  • False ये False

    • None
    • खाली डेटा संरचनाओं पर विचार किया जाएगा।(ओह)
  • +0

    यह सबसे दिलचस्प समाधान है, क्योंकि प्रति चरित्र आधार पर आधार को अस्वीकार करना आसान है। – Alex

    +1

    'इस्लाफा' पहले से ही प्रत्येक पत्र की जांच करता है। इसे एक से अधिक बार उपयोग करने की आवश्यकता नहीं है। – zondo

    0
    func only_letters(str): 
        return not any(str.isdigit(c) for c in str) 
    
    +0

    ऐसे कई वर्ण हैं जो गैर अंकों हैं और वर्णमाला भी नहीं हैं, इसलिए यह एक अविश्वसनीय समाधान है। – zondo

    3

    असल में, हम 21 वीं सदी और लोग अब ASCII केवल इसलिए का उपयोग करते समय के बारे में सवाल anwering संवाद की वैश्विक दुनिया में अब कर रहे हैं "यह केवल अक्षर है" आप खाते पत्र में लेने की जरूरत गैर-ASCII अक्षरों से भी।

    unicodedata.category('陳') 
    'Lo' 
    
    unicodedata.category('A') 
    'Lu' 
    
    unicodedata.category('1') 
    'Nd' 
    
    unicodedata.category('a') 
    'Ll' 
    

    categories and their abbreviations यूनीकोड ​​मानक में परिभाषित कर रहे हैं: अजगर जो अन्य बातों के अलावा यूनिकोड वर्ण के वर्गीकरण की अनुमति देता है एक बहुत अच्छा unicodedata पुस्तकालय है।

    def only_letters(s): 
        for c in s: 
         cat = unicodedata.category(c) 
         if cat not in ('Ll','Lu','Lo'): 
          return False 
        return True 
    

    और फिर: यहाँ से आप काफी आसानी से आप इस तरह एक समारोह के साथ आ सकते हैं कर सकते हैं

    only_letters('Bzdrężyło') 
    True 
    
    only_letters('He7lo') 
    False 
    

    आप देख सकते हैं श्वेतसूची वाले श्रेणियों काफी आसानी से अंदर टपल द्वारा नियंत्रित किया जा सकता समारोह। अधिक विस्तृत चर्चा के लिए this article देखें।

    0

    (1) स्ट्रिंग मुद्रित करते समय str.isalpha() का उपयोग करें।

    (2) अपने संदर्भ के लिए कार्यक्रम नीचे की जांच करें: -

    str = "this"; # No space & digit in this string 
    print str.isalpha() # it gives return True 
    
    str = "this is 2"; 
    print str.isalpha() # it gives return False 
    

    नोट: - मैं Ubuntu में उपरोक्त उदाहरण जाँच।

    संबंधित मुद्दे

     संबंधित मुद्दे