পাইথনে 123,456.908ভাসতে চাইলে আমি কীভাবে একটি স্ট্রিং রূপান্তর করতে পারি 123456.908?
উত্তর:
কেবল এর ,সাথে মুছে ফেলুন replace():
float("123,456.908".replace(',',''))
python cd_size = float("737,280,000".replace(',','')) (আমি প্রকৃতপক্ষে ব্যবহার করেছি)
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 স্ট্রিং builtin পদ্ধতি । আমি এখানে যা ব্যবহার করছি তা হ'ল স্ট্যান্ডার্ড লাইব্রেরি মডিউল atofথেকে ফাংশন localeযা একেবারেই অবহেলিত নয়।
locale.atof
যদি আপনি লোকেলটি জানেন না এবং আপনি কোনও ধরণের সংখ্যাকে পার্স করতে চান তবে এই 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
আপনার যদি দশমিক বিভাজক হিসাবে কমা এবং হাজার হাজার বিভাজকের মতো বিন্দু থাকে তবে আপনি এটি করতে পারেন:
s = s.replace('.','').replace(',','.')
number = float(s)
আশা করি এটি সাহায্য করবে
আমি আপনার পক্ষে লিখেছিলাম এমন একটি সহজ উপায়। :)
>>> 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মডিউলটি ব্যবহার করা - অন্য সব কিছুই কেবল একটি খুব বাজে হ্যাক যা আপনাকে ভবিষ্যতে সমস্যার মধ্যে ফেলবে।