दिलचस्प पोस्ट
जावास्क्रिप्ट: कोई फाइल अपलोड किए बिना … फ़ाइल के बिना PHP के साथ फाइल की शुरुआत में लिखना चाहिए जावा में एकाधिक विरासत मैं जावास्क्रिप्ट के साथ फाइल एक्सटेंशन कैसे प्राप्त करूं? JSON.NET त्रुटि प्रकार के लिए स्वयं संदर्भित पाश पता चला सेलेनियम का उपयोग करने वाले प्रमाण पत्रों से कैसे निपटें? एंड्रॉइड पर पृष्ठ कर्ल को लागू करें? एंड्रॉइड – एक AsyncTask के लिए टाइमआउट सेट करना? आईफोन एसडीके के साथ एक छवि आकार का आकार बदलने / अनुकूलित करने का सबसे आसान तरीका क्या है? मैं दो ArrayLists के बीच अंतर कैसे गणना करूं? कॉमा और बिंदु के साथ दोगुनी करने के लिए स्ट्रिंग पार्स करें कचरा कलेक्टर को चलाने के लिए मजबूर कैसे करें? स्ट्रिंग से एचटीएमएल टैग निकालें कार्यपत्रक डेटा पर SQL- जैसी क्वेरी बनाने के लिए Excel फ़ंक्शन? मैक ओएस एक्स पर MySQLdb (पायथन डेटा एक्सेस लाइब्रेरी को MySQL) कैसे स्थापित करें?

मैं Python को किसी स्ट्रिंग को किसी संख्या में कनवर्ट करने के लिए कैसे उपयोग करूं, अगर इसमें हजारों अलगाव के रूप में कमांड है?

मेरे पास एक स्ट्रिंग है जो एक संख्या का प्रतिनिधित्व करता है जो कि हजारों अलग करने के लिए कॉमा का उपयोग करता है। मैं इसे कैसे अजगर में एक संख्या में परिवर्तित कर सकता हूं?

>>> int("1,000,000") 

एक ValueError उत्पन्न करता है

इससे पहले कि मैं इसे बदलने की कोशिश करता हूं, मैं खाली स्ट्रिंग्स के साथ अल्पविराम को बदल सकता हूं, लेकिन किसी तरह गलत लगता है क्या कोई बेहतर तरीका है?

वेब के समाधान से एकत्रित समाधान "मैं Python को किसी स्ट्रिंग को किसी संख्या में कनवर्ट करने के लिए कैसे उपयोग करूं, अगर इसमें हजारों अलगाव के रूप में कमांड है?"

 import locale locale.setlocale( locale.LC_ALL, 'en_US.UTF-8' ) locale.atoi('1,000,000') # 1000000 locale.atof('1,000,000.53') # 1000000.53 

हजारों अलगाव के साथ संख्याओं को पार्स करने के कई तरीके हैं और मुझे संदेह है कि ~ उबुंटू द्वारा वर्णित मार्ग सभी मामलों में सबसे अच्छा है इसीलिए मैं अन्य तरीकों की सूची भी करता हूं।

  1. __main__ setlocale() कॉल करने के लिए उचित जगह __main__ मॉड्यूल में है। यह वैश्विक सेटिंग है और पूरे कार्यक्रम और सी एक्सटेंशन को प्रभावित करेगा (हालांकि ध्यान दें कि LC_NUMERIC सेटिंग सिस्टम स्तर पर सेट नहीं की गई है, लेकिन पायथन द्वारा अनुकरण किया गया है)। दस्तावेज़ीकरण में चेतावनियां पढ़ें और इस तरह से जाने से पहले दो बार सोचें। यह शायद एक आवेदन में ठीक है, लेकिन व्यापक ऑडियंस के लिए लाइब्रेरी में कभी इसका उपयोग न करें। संभवतया आप कुछ विशेष वर्णसेट एन्कोडिंग के साथ लोकेल का अनुरोध करने से बचते हैं, क्योंकि यह कुछ सिस्टम पर उपलब्ध नहीं हो सकता है

  2. अंतर्राष्ट्रीयकरण के लिए तीसरी पार्टी पुस्तकालयों में से एक का उपयोग करें उदाहरण के लिए, पीआईआईसीयू पूरे प्रक्रिया को प्रभावित करने के लिए किसी भी उपलब्ध लोकेल का उपयोग करने की अनुमति देता है (और स्थानीय हिस्सों का उपयोग किए बिना विशेष हज़ार विभाजक के साथ पार्सिंग नंबर भी):

    NumberFormat.createInstance (लोकेल ( 'en_US'))। पार्स ( "1000000")। GetLong ()

  3. अपना पार्सिंग फ़ंक्शन लिखें, अगर आप इसे "सही तरीके से" करने के लिए तृतीय पक्ष पुस्तकालयों को स्थापित करने के लिए नहीं करते हैं यह int(data.replace(',', '')) रूप में सरल हो सकता है जब सख्त सत्यापन की आवश्यकता नहीं होती है।

खाली स्ट्रिंग्स के साथ अल्पविराम को बदलें, और परिणामी स्ट्रिंग को एक int या float बदलें।

 >>> a = '1,000,000' >>> int(a.replace(',' , '')) 1000000 >>> float(a.replace(',' , '')) 1000000.0 

मुझे स्वीकार किए जाते हैं उत्तर से स्थानीय त्रुटि मिली है, लेकिन फिनलैंड (Windows XP) में निम्न परिवर्तन यहां काम करता है:

 import locale locale.setlocale( locale.LC_ALL, 'english_USA' ) print locale.atoi('1,000,000') # 1000000 print locale.atof('1,000,000.53') # 1000000.53 

यह काम:

(एक गंदे लेकिन तेज रास्ता)

 >>> a='-1,234,567,89.0123' >>> "".join(a.split(",")) '-123456789.0123' 

मैंने यह कोशिश की यह सवाल से परे थोड़ा सा जाता है: आपको इनपुट मिलता है इसे पहले स्ट्रिंग में कनवर्ट किया जाएगा (यदि यह एक सूची है, उदाहरण के लिए सुंदर सूप से); फिर int के लिए, फिर फ्लोट करने के लिए

यह तब तक जाता है जब तक यह मिल सकता है। सबसे खराब स्थिति में, यह सब कुछ स्ट्रिंग के रूप में असंबंधित देता है

 def to_normal(soupCell): ''' converts a html cell from beautiful soup to text, then to int, then to float: as far as it gets. US thousands separators are taken into account. needs import locale''' locale.setlocale( locale.LC_ALL, 'english_USA' ) output = unicode(soupCell.findAll(text=True)[0].string) try: return locale.atoi(output) except ValueError: try: return locale.atof(output) except ValueError: return output 
 >>> import locale >>> locale.setlocale(locale.LC_ALL, "") 'en_US.UTF-8' >>> print locale.atoi('1,000,000') 1000000 >>> print locale.atof('1,000,000.53') 1000000.53 

यह यूएस में लिनक्स पर किया जाता है। -Suresh

 #python3 tenzin def changenum(data): foo = "" for i in list(data): if i == ",": continue else: foo += i return float(int(foo))