উত্তর:
দেখুন লোকেল মডিউল।
এটি মুদ্রা (এবং তারিখ) ফর্ম্যাটিং করে।
>>> import locale
>>> locale.setlocale( locale.LC_ALL, '' )
'English_United States.1252'
>>> locale.currency( 188518982.18 )
'$188518982.18'
>>> locale.currency( 188518982.18, grouping=True )
'$188,518,982.18'
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
এবং এটি পুরোপুরি কাজ করেছে!
>>> '{:20,.2f}'.format(18446744073709551616.0)
'18,446,744,073,709,551,616.00'
$ 123,456.78
কখনও কখনও ঘটে । সম্পাদনা করুন: মার্কডাউন অতিরিক্ত স্থানগুলি বের করে,
এটি কেন অনলাইনে (বা এই থ্রেডে) বেশি উল্লেখ করা হয়নি তা পুরোপুরি নিশ্চিত নয়, তবে বাবেল এজলওয়াল ছেলেরা থেকে প্যাকেজ (এবং জ্যাঙ্গো ইউটিলিটিস) মুদ্রা ফর্ম্যাট করার জন্য (এবং প্রচুর অন্যান্য আই 18 এন টাস্ক) দুর্দান্ত। এটি দুর্দান্ত কারণ এটি পাইথন লোকেল মডিউলের মূল পাইথন মডিউলের মতো বিশ্বব্যাপী সবকিছু করার প্রয়োজন থেকে ভোগেন না।
ওপি যে উদাহরণটি দিয়েছে তা হ'ল:
>>> import babel.numbers
>>> import decimal
>>> babel.numbers.format_currency( decimal.Decimal( "188518982.18" ), "GBP" )
£188,518,982.18
locale
যুক্তিটি format_currency
ব্যবহার করা যেতে পারে তবে এটি চার বছর আগে ডকের মধ্যে ছিল না (যখন আমি এই মন্তব্যটি লিখেছিলাম) অথবা আমি এই উত্তরটির কোডটি ডকটি পরীক্ষা না করেই ঠিক যেমন পরীক্ষা করেছি।
এটি একটি প্রাচীন পোস্ট, তবে আমি কেবল নিম্নলিখিত সমাধানটি কার্যকর করেছি যা:
কোড:
num1 = 4153.53
num2 = -23159.398598
print 'This: ${:0,.0f} and this: ${:0,.2f}'.format(num1, num2).replace('$-','-$')
আউটপুট:
This: $4,154 and this: -$23,159.40
এবং মূল পোস্টারের জন্য, অবশ্যই, কেবল স্যুইচ $
করুন£
print(f'Value is: ${value:,.2f}'.replace('$-', '-$'))
আমার লোকাল সেটিংসটি অসম্পূর্ণ বলে মনে হয়েছিল, তাই আমি এই এসও উত্তরটির বাইরেও সন্ধান করেছি এবং পেয়েছি:
http://docs.python.org/library/decimal.html#recipes
অপারেটিং সিস্টেম স্বাধীন
শুধু এখানে ভাগ করতে চেয়েছিলেন।
def moneyfmt(value, places=2, curr='', sep=',', dp='.', pos='', neg='-', trailneg='')
?
আপনি যদি ওএসএক্স ব্যবহার করে থাকেন এবং এখনও নিজের স্থানীয় মডিউলটি সেট করে রেখেছেন তবে এই প্রথম উত্তরটি কাজ করবে না আপনি নিম্নলিখিত ত্রুটিটি পাবেন:
Traceback (most recent call last):File "<stdin>", line 1, in <module> File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/locale.py", line 221, in currency
raise ValueError("Currency formatting is not possible using "ValueError: Currency formatting is not possible using the 'C' locale.
এর প্রতিকারের জন্য আপনাকে নিম্নলিখিতগুলি ব্যবহার করতে হবে:
locale.setlocale(locale.LC_ALL, 'en_US')
"{:0,.2f}".format(float(your_numeric_value))
পাইথন 3 এ কাজ করে; এটি নিম্নলিখিত লাইনের একটির মতো কিছু দেয়:
10,938.29
10,899.00
10,898.99
2,328.99
আমি যদি আপনি থাকতাম তবে আমি ব্যাবেল: http://babel.pocoo.org/en/latest/index.html ব্যবহার করতাম
from babel.numbers import format_decimal
format_decimal(188518982.18, locale='en_US')
format_currency
:) এপিআই ডক্সে নজর রাখা মূল্যবান ।
ওহ, এটি একটি আকর্ষণীয় জন্তু।
আমি এই অধিকারটি পেতে যথেষ্ট সময় ব্যয় করেছি, তিনটি মূল সমস্যা রয়েছে যা লোকেল থেকে লোকেলের চেয়ে পৃথক: - মুদ্রার প্রতীক এবং দিক - হাজার বিভাজক - দশমিক পয়েন্ট
আমি এটির পরিবর্তে আমার নিজস্ব বিস্তৃত প্রয়োগ লিখেছি যা কিউই অজগর কাঠামোর অংশ, এলজিপিএল দেখুন: এড উত্সটি এখানে:
http://svn.async.com.br/cgi-bin/viewvc.cgi/kiwi/trunk/kiwi/currency.py?view=markup
কোডটি সামান্য লিনাক্স / গ্লিবসি নির্দিষ্ট, তবে উইন্ডোজ বা অন্যান্য ইউনিক্সগুলিতে গ্রহণ করা খুব বেশি কঠিন হওয়া উচিত নয়।
একবার ইনস্টল হয়ে গেলে আপনি নিম্নলিখিতগুলি করতে পারেন:
>>> from kiwi.datatypes import currency
>>> v = currency('10.5').format()
যা তখন আপনাকে দেবে:
'$10.50'
অথবা
'10,50 kr'
বর্তমানে নির্বাচিত লোকেলের উপর নির্ভর করে।
এই পোস্টটির অপরটির মূল বিষয়টি হ'ল এটি পাইথনের পুরানো সংস্করণগুলির সাথে কাজ করবে। লোকাল সিউরেন্সির অজগর 2.5 তে চালু হয়েছিল।
10,50 kr
পরিবর্তে একটি সুবিধা হবে kr 10,50
।
# 9,348.237 'এর মতো দেখতে এমন বিন্যাসে' মোট: 'পরিবর্তনশীল মুদ্রণ করা হচ্ছে
print ('Total:', '{:7,.3f}'.format(zum1))
যেখানে '{: 7, .3f}' এ ক্ষেত্রে সংখ্যাটি ফর্ম্যাট করার জন্য স্পেসের সংখ্যা 3 দশমিক পয়েন্ট সহ মিলিয়ন। তারপরে আপনি '। ফর্ম্যাট (জুম 1) যুক্ত করুন। জুম 1 থ্যা ভেরিয়েবল যা আমার বিশেষ প্রোগ্রামে সমস্ত সংখ্যার যোগফলের জন্য বড় সংখ্যা রয়েছে। পরিবর্তনশীল এমন কোনও কিছু হতে পারে যা আপনি ব্যবহার করার সিদ্ধান্ত নেন।
উপরের কোড দ্বারা অনুপ্রাণিত: ডি
def money_format(value):
value = str(value).split('.')
money = ''
count = 1
for digit in value[0][::-1]:
if count != 3:
money += digit
count += 1
else:
money += f'{digit},'
count = 1
if len(value) == 1:
money = ('$' + money[::-1]).replace('$-','-$')
else:
money = ('$' + money[::-1] + '.' + value[1]).replace('$-','-$')
return money
আমি একই জিনিসটি দেখতে এসেছি এবং পাই পাই অজগর-অর্থ এখনও এটি ব্যবহৃত হয়নি তবে সম্ভবত দুজনের মিশ্রণ ভাল হবে
@ নেটের উত্তরের সাহায্যে একটি ফাংশনের অভ্যন্তরে এটি গণনা করার জন্য একটি ল্যাম্বদা
converter = lambda amount, currency: "%s%s%s" %(
"-" if amount < 0 else "",
currency,
('{:%d,.2f}'%(len(str(amount))+3)).format(abs(amount)).lstrip())
এবং তারপর,
>>> converter(123132132.13, "$")
'$123,132,132.13'
>>> converter(-123132132.13, "$")
'-$123,132,132.13'
সাধারণ অজগর কোড!
def format_us_currency(value):
value=str(value)
if value.count(',')==0:
b,n,v='',1,value
value=value[:value.rfind('.')]
for i in value[::-1]:
b=','+i+b if n==3 else i+b
n=1 if n==3 else n+1
b=b[1:] if b[0]==',' else b
value=b+v[v.rfind('.'):]
return '$'+(value.rstrip('0').rstrip('.') if '.' in value else value)
"$2,129.1468284147656"
, "$10,948.3742933"
, "$1,0908"
। গারবলস স্ট্রিং।
locale
মুদ্রার মান এবং সেই মুদ্রার প্রদর্শনের বৈশিষ্ট্যগুলির মডিউলটির ব্যবহারটি ডিক্লোল করে আপনার অনুরোধটি ভাষাতে প্রয়োগ করা হয়নি ।