2015-08-16 8 views
7

नया स्वरूपण हमें यह करने देता है: '{:.<12}'.format('##') - वैकल्पिक भरण वर्ण।
क्या हम पुरानी स्वरूपण का उपयोग कर ऐसा कर सकते हैं?
(मैं जानता हूँ कि हम रिक्त स्थान '%-12s' % '##' साथ भर सकते हैं)पायथन स्ट्रिंग स्वरूपण - पुराना `%` बनाम नया 'str.format`

इसके अलावा, वर्ष स्वरूपण हमें ऐसा करने की सुविधा देता है: '%-*s' % (12, '##') - चर लंबाई।
क्या हम नए स्वरूपण का उपयोग कर ऐसा कर सकते हैं?

उत्तर

4

नए प्रारूप का उपयोग कर चर लंबाई कर लिए, यदि आप प्रतिस्थापन की नेस्टिंग उपयोग कर सकते हैं -

>>> '{:{}<{}}'.format('##','.',12) 
'##..........' 
>>> '{:{}<{}}'.format('##','-',12) 
'##----------' 
>>> '{:{}<{}}'.format('##','-',20) 
'##------------------' 

भी भरने चरित्र के रूप में रिक्त स्थान -

>>> '{:{}<{}}'.format('##',' ',20) 
'##     ' 

कृपया ध्यान दें कि आप हमेशा घोंसले का उपयोग करने की जरूरत नहीं है प्रतिस्थापन के, आप उन्हें प्रारूप में भी निर्दिष्ट कर सकते हैं -

>>> '{: <12}'.format('##') 
'##   ' 

आप यह तय करने के लिए कि कौन सा तर्क कहां जाता है, प्रत्येक तर्क की स्थिति भी निर्दिष्ट कर सकता है। उदाहरण -

>>> '{2:{0}<{1}}'.format('.',12,'##') 
'##..........' 
>>> '{0:{1}<{2}}'.format('##','-',20) 
'##------------------' 
+0

हम्म, सुनना चाहते हैं कि मेरे उत्तर में क्या गलत है। –

+2

मुझे लगता है कि यह अच्छा लग रहा है। एक उत्थान है। – muddyfish

2
format आप घोंसला कर सकते हैं प्रतिस्थापन के साथ

:

'{:.<{}}'.format('##',12) 

तो format अधिक शक्तिशाली है। % के साथ वैकल्पिक भरने के पात्र संभव नहीं हैं।

1

प्रश्न के अपने पहले भाग के लिए, आप संरेखित छोड़ दिया और 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') 
+0

पहले भाग के लिए, विचार चर लंबाई होना था। नेस्टेड फॉर्मेटिंग हल हो गया। [Pyformat] (https://pyformat.info/) लिंक के लिए धन्यवाद! – avamsi

+0

कोई जांच नहीं है, फिर '{} 'नौकरी करनी होगी' '{: <{}}' प्रारूप ('##', var)' या '' {: <{var}} 'प्रारूप (' ##, var = var ') ' –

संबंधित मुद्दे