प्रश्न के अपने पहले भाग के लिए, आप संरेखित छोड़ दिया और 12 की चौड़ाई का उपयोग कर भरने के चार के रूप में एक स्थान का उपयोग कर सकते हैं:
'%-*s' % (12, '##')
'{: <12}'.format('##')
साथ प्रतिस्थापित किया जा सकता है।
दूसरे भाग के लिए नहीं, आप पुराने स्टाइल स्वरूपण के साथ भरने वाले वर्ण को निर्दिष्ट नहीं कर सकते हैं।
एक अच्छा साइट here है कि आप और पुराने नए बनाम के साथ क्या नहीं कर सकते हैं का सबसे पता चलता है, एक टुकड़ा है कि पैडिंग और संरेखित तार को शामिल किया गया:
पैडिंग और संरेखित तार
डिफ़ॉल्ट मानों से सामग्री का प्रतिनिधित्व करने के लिए आवश्यकतानुसार केवल उतने ही वर्ण लेने के लिए स्वरूपित किया जाता है। हालांकि यह परिभाषित करना भी संभव है कि एक मान को एक विशिष्ट लंबाई तक गद्देदार किया जाना चाहिए।
दुर्भाग्य से डिफ़ॉल्ट संरेखण पुरानी और नई शैली स्वरूपण के बीच अलग है। पुरानी शैली को सही ढंग से गठबंधन करने के लिए डिफ़ॉल्ट रूप से परिभाषित किया गया है, जबकि नई शैली के लिए यह छोड़ा गया है।
Align right:
Old '%10s' % ('test',)
New '{:>10}'.format('test')
Align left:
Old
'%-10s' % ('test',)
New
'{:10}'.format('test')
तर्क द्वारा:
पिछले उदाहरण में, मूल्य '10' प्रारूप स्ट्रिंग के हिस्से के रूप एन्कोड किया गया है। हालांकि, तर्कों के रूप में ऐसे मूल्यों को भी आपूर्ति करना संभव है।
Old
'%*s' % ((- 8), 'test')
New
'{:<{}s}'.format('test', 8)
फिर, नई शैली स्वरूपण कैसे मान गद्देदार और गठबंधन कर रहे हैं पर अधिक नियंत्रण हासिल करके पुराने संस्करण से बढ़कर है। आप गद्दी चरित्र चयन कर सकते हैं:
इस आपरेशन पुरानी शैली स्वरूपण के साथ उपलब्ध नहीं है।
New
'{:_<10}'.format('test')
Output
और यह भी केन्द्र संरेखित मान:
इस आपरेशन पुरानी शैली स्वरूपण के साथ उपलब्ध नहीं है।
New
'{:^10}'.format('test')
हम्म, सुनना चाहते हैं कि मेरे उत्तर में क्या गलत है। –
मुझे लगता है कि यह अच्छा लग रहा है। एक उत्थान है। – muddyfish