2012-09-17 14 views
29

संभव डुप्लिकेट:
How do I check if a string is a number in Python?
Python - Parse String to Float or Intमैं कैसे जांच सकता हूं कि स्ट्रिंग में पायथन में कोई संख्यात्मक मान है या नहीं?

उदाहरण के लिए, मैं एक स्ट्रिंग जाँच करना चाहते हैं और अगर यह (int() के साथ) पूर्णांक परिवर्तनीय नहीं है, मैं यह कैसे पता लगा सकते हैं ?

+0

पहले से ही एक समाधान यहाँ http://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-in-python – ronak

+0

के लिए नहीं है स्पष्टता, '99' की अनुमति दी जानी चाहिए? '+123' के बारे में क्या? या "1729" (अग्रणी और पिछली जगहों के साथ पूर्णांक)। '0x123'? –

+0

@ मार्क डिकिंसन - क्यों '99' की अनुमति नहीं दी जाएगी? – mgilson

उत्तर

37

उपयोग एक चल बिन्दु संख्या के लिए एक स्ट्रिंग में बदल सकते हैं हैं:

>>> '123'.isdigit() 
True 
>>> '1a23'.isdigit() 
False 

प्रलेखन का उद्धरण:

स्ट्रिंग में सभी वर्ण अंक हैं और कम से कम एक वर्ण है, अन्यथा गलत है।

unicode तार या अजगर 3 तार के लिए, आप एक और अधिक सटीक परिभाषा का उपयोग करें और के बजाय unicode.isdecimal()/str.isdecimal() का उपयोग करना होगा; सभी यूनिकोड अंक दशमलव संख्या के रूप में व्याख्या योग्य नहीं हैं। U+00B2 SUPERSCRIPT 2 एक अंक है, लेकिन दशमलव नहीं, उदाहरण के लिए।

+2

-1 'a =" 0x12 "' a.isdigit() '>>> गलत – user1655481

+4

मैंने डाउनवोट नहीं किया, लेकिन" 1234 ".isdigit()' will 'झूठी' वापस लौटें, भले ही 'int' सामने की जगह को खुशी से अनदेखा कर दे। – mgilson

+1

@ user1655481: यह संख्या नहीं है, यह एक अजगर हेक्स शाब्दिक है। 'int ('0x12')' ValueError फेंकता है जब तक आप आधार निर्दिष्ट नहीं करते हैं। –

28

आप कर सकते हैं हमेशा try यह:

try: 
    a = int(yourstring) 
except ValueError: 
    print "can't convert" 

नोट है कि इस विधि से कहीं बढ़कर isdigit अगर आप जानना चाहते हैं कि आप .isdigit() method का उपयोग कर float

+3

उपरोक्त। यह कोशिश करने के लिए और अधिक pythonic है .. except :) – Ohad

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

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