मैं पायथन में 123,456.908फ्लोट की तरह एक स्ट्रिंग कैसे बदल सकता हूं 123456.908?
जवाबों:
बस इसके ,साथ निकालें replace():
float("123,456.908".replace(',',''))
python cd_size = float("737,280,000".replace(',','')) (मैं वास्तव में int का इस्तेमाल करता था)
setlocaleपहले स्थान पर है।
... या अल्पविराम को कचरे के रूप में छानने के बजाय, हम समग्र स्ट्रिंग को फ्लोट के स्थानीयकृत स्वरूपण के रूप में मान सकते हैं, और स्थानीयकरण सेवाओं का उपयोग कर सकते हैं:
from locale import atof, setlocale, LC_NUMERIC
setlocale(LC_NUMERIC, '') # set to your default locale; for me this is
# 'English_Canada.1252'. Or you could explicitly specify a locale in which floats
# are formatted the way that you describe, if that's not how your locale works :)
atof('123,456') # 123456.0
# To demonstrate, let's explicitly try a locale in which the comma is a
# decimal point:
setlocale(LC_NUMERIC, 'French_Canada.1252')
atof('123,456') # 123.456
Extension modules should never call setlocale()
atof तार की अंतर्निहित विधि है । मैं यहां जो उपयोग कर रहा हूं atofवह localeमानक पुस्तकालय मॉड्यूल से फ़ंक्शन है , जो बिल्कुल भी नहीं है।
locale.atof
यदि आपके पास दशमलव विभाजक के रूप में अल्पविराम और हजारों विभाजक के रूप में डॉट है, तो आप यह कर सकते हैं:
s = s.replace('.','').replace(',','.')
number = float(s)
आशा है कि यह मदद करेगा
यदि आपको लोकल का पता नहीं है और आप किसी भी प्रकार के नंबर को पार्स करना चाहते हैं, तो इस parseNumber(text)फ़ंक्शन का उपयोग करें । यह सही नहीं है लेकिन अधिकांश मामलों को ध्यान में रखें:
>>> parseNumber("a 125,00 €")
125
>>> parseNumber("100.000,000")
100000
>>> parseNumber("100 000,000")
100000
>>> parseNumber("100,000,000")
100000000
>>> parseNumber("100 000 000")
100000000
>>> parseNumber("100.001 001")
100.001
>>> parseNumber("$.3")
0.3
>>> parseNumber(".003")
0.003
>>> parseNumber(".003 55")
0.003
>>> parseNumber("3 005")
3005
>>> parseNumber("1.190,00 €")
1190
>>> parseNumber("1190,00 €")
1190
>>> parseNumber("1,190.00 €")
1190
>>> parseNumber("$1190.00")
1190
>>> parseNumber("$1 190.99")
1190.99
>>> parseNumber("1 000 000.3")
1000000.3
>>> parseNumber("1 0002,1.2")
10002.1
>>> parseNumber("")
>>> parseNumber(None)
>>> parseNumber(1)
1
>>> parseNumber(1.1)
1.1
>>> parseNumber("rrr1,.2o")
1
>>> parseNumber("rrr ,.o")
>>> parseNumber("rrr1rrr")
1
यहाँ एक आसान तरीका है जो मैंने आपके लिए लिखा है। :)
>>> number = '123,456,789.908'.replace(',', '') # '123456789.908'
>>> float(number)
123456789.908
reइस तरह के कार्य के लिए एक बड़ा हथौड़ा है।
float(number)इसके वर्णनात्मक स्पर्श के कारण पसंद है । +1 ;-)
बस के ,साथ बदलें ()।
f = float("123,456.908".replace(',',''))
print(type(f)
प्रकार () आपको दिखाएगा कि यह फ्लोट में परिवर्तित हो गया है
विभिन्न मुद्रा प्रारूपों के लिए बेहतर समाधान :
def text_currency_to_float(text):
t = text
dot_pos = t.rfind('.')
comma_pos = t.rfind(',')
if comma_pos > dot_pos:
t = t.replace(".", "")
t = t.replace(",", ".")
else:
t = t.replace(",", "")
return(float(t))
localeमॉड्यूल का उपयोग करना है - बाकी सब सिर्फ एक बहुत बुरा हैक है जो आपको भविष्य में परेशानी में डाल देगा।