पर जोड़ें, मैं 1000000
को 1.000.000
को पायथन में कैसे प्रारूपित करूं? जहां '।' दशमलव चिह्न हजारों विभाजक है।'दशमलव-चिह्न' हजारों विभाजक को
उत्तर
आप एक हज़ार विभाजक जोड़ना चाहते हैं, तो आप लिख सकते हैं:
>>> '{0:,}'.format(1000000)
'1,000,000'
लेकिन यह केवल काम करता है पायथन 2.7 और उच्चतर में।
format string syntax देखें।
पुराने संस्करणों में, आप locale.format() उपयोग कर सकते हैं:
>>> import locale
>>> locale.setlocale(locale.LC_ALL, '')
'en_AU.utf8'
>>> locale.format('%d', 1000000, 1)
'1,000,000'
locale.format()
का उपयोग कर के अतिरिक्त लाभ यह है कि यह अपने स्थान के हज़ार विभाजक, उदा का उपयोग करेगा
>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'de_DE.utf-8')
'de_DE.utf-8'
>>> locale.format('%d', 1000000, 1)
'1.000.000'
यदि आप मुद्राओं के साथ काम कर रहे हैं, तो आप babel.numbers.format_currency सहायक का भी उपयोग कर सकते हैं। – semente
फ्लोट के लिए वाक्यविन्यास '{: 6, .2f} 'है जहां' 6' फ़ील्ड चौड़ाई है और '2' सटीकता है। कॉमा के प्लेसमेंट ने मुझे थोड़ी सी जगह दी। – nathanielobrown
आप सभी इंस्टॉल किए गए लोकल को "$ locale -a" के साथ देख सकते हैं, उदाहरण के लिए एक डिफ़ॉल्ट उबंटू इंस्टॉलेशन में केवल en_US होगा, इसलिए यह एक व्यवहार्य रणनीति नहीं है। – xApple
मुझे वास्तव में यह समझ में नहीं आया; लेकिन यहां मैं समझता हूं:
आप 1123000 से 1,123,000 रूपांतरित करना चाहते हैं। आप ऐसा कर सकते हैं प्रारूप का उपयोग करके:
उदाहरण:
>>> format(1123000,',d')
'1,123,000'
आपके उत्तर में भाषा कुछ हद तक भ्रमित है। शायद आप इसे सुधार सकते हैं? – Zero3
बस थोड़ा यहाँ जवाब का विस्तार :)
मैं दोनों के लिए आवश्यक एक हज़ारवां विभाजक है और एक चल बिन्दु संख्या की शुद्धता की सीमा।
यह निम्न स्वरूप स्ट्रिंग का उपयोग करके प्राप्त किया जा सकता:
> my_float = 123456789.123456789
> "{:0,.2f}".format(my_float)
'123,456,789.12'
यह format()
-specifier के मिनी भाषा में बताता है:
[[fill]align][sign][#][0][width][,][.precision][type]
स्रोत: https://www.python.org/dev/peps/pep-0378/#current-version-of-the-mini-language
क्या होगा यदि वह निम्नलिखित आउटपुट प्राप्त करना चाहता था: '123.456.789,12''? –
@ dot.Py वह उपयुक्त लोकेल 'locale.setlocale (locale.LC_ALL,' de_DE.utf-8 ') सेट कर सकता है, फिर '(" {:।% Dn} "% (math.log10 (my_float) + 3))। प्रारूप (my_float) 'हालांकि' n 'प्रारूप स्ट्रिंग लोकल को' f 'के बजाय' g 'के समतुल्य समकक्ष है, इसलिए परिशुद्धता क्षेत्र गन्दा हो जाता है। – Duncan
itertools
का उपयोग दे सकता है आप कुछ और लचीलापन:
>>> from itertools import zip_longest
>>> num = "1000000"
>>> sep = "."
>>> places = 3
>>> args = [iter(num[::-1])] * places
>>> sep.join("".join(x) for x in zip_longest(*args, fillvalue=""))[::-1]
'1.000.000'
यहां केवल एक वैकल्पिक उत्तर है। आप अजगर में और कुछ अजीब तर्क के माध्यम से विभाजन ऑपरेटर का उपयोग कर सकते हैं यहाँ कोड
i=1234567890
s=str(i)
str1=""
s1=[elm for elm in s]
if len(s1)%3==0:
for i in range(0,len(s1)-3,3):
str1+=s1[i]+s1[i+1]+s1[i+2]+"."
str1+=s1[i]+s1[i+1]+s1[i+2]
else:
rem=len(s1)%3
for i in range(rem):
str1+=s1[i]
for i in range(rem,len(s1)-1,3):
str1+="."+s1[i]+s1[i+1]+s1[i+2]
print str1
आउटपुट
1.234.567.890
मिकेल द्वारा उत्तर पर ड्राइंग है, मैं अपने matplotlib साजिश में इस तरह उसके समाधान लागू। मुझे लगा कि कुछ इसे उपयोगी पाते हैं:
ax=plt.gca()
ax.get_xaxis().set_major_formatter(matplotlib.ticker.FuncFormatter(lambda x, loc: locale.format('%d', x, 1)))
कृपया अपने प्रश्न को स्पष्ट करें। कुछ कोड दिखाएं, उस ऑब्जेक्ट के डेटा प्रकार का उल्लेख करें जिसे आप मुद्रित करना चाहते हैं, उदाहरण आउटपुट दें। –
@ स्वेनमार्कैच: मैं दूसरा हूं! – Trufa
आपके पास एक नंबर में एक से अधिक दशमलव बिंदु नहीं हो सकते हैं। '1.000.000' का मतलब क्या है? क्या आपका मतलब अल्पविराम है? –