मुझे अपने प्रश्न के लिए सटीक शब्द खोजने में कठिन समय हो रहा है क्योंकि मैं स्ट्रिंग्स को स्वरूपित करने के लिए नया हूं।
मान लें कि मेरे पास दो चर हैं:
customer = 'John Doe'
balance = 39.99
मैं एक पंक्ति मुद्रित करना चाहता हूं जो 25 वर्ण चौड़ा है, और दो मानों के बीच की जगह को एक विशिष्ट वर्ण (इस मामले में, अवधि) के साथ भरता है:
'John Doe .......... 39.99'
इसलिए जैसे ही मैं ग्राहकों के माध्यम से लूप करता हूं, मैं हमेशा 25 वर्णों वाली एक पंक्ति मुद्रित करना चाहता हूं, उनके नाम बाईं ओर, और उनका संतुलन दाईं ओर, और अवधियों को बीच की जगह को भरने के लिए समायोजित करने की अनुमति देता है।
मैं इसे कई चरणों में तोड़ सकता हूं और परिणाम प्राप्त कर सकता हूं ...
customer = 'Barry Allen'
balance = 99
spaces = 23 - len(customer + str(balance))
'{} {} {}'.format(customer, '.' * spaces, balance)
# of course, this assumes that len(customer + str(balance)) is less than 23 (which is easy to work around)
... लेकिन मैं उत्सुक हूं कि ऐसा करने का एक और "सुरुचिपूर्ण" तरीका है, जैसे स्ट्रिंग स्वरूपण के साथ।
क्या यह संभव भी है?
धन्यवाद!
2 जवाब
आप अजगर में ljust()
और rjust()
स्ट्रिंग ऑब्जेक्ट का उपयोग कर सकते हैं:
customer = 'John Doe'
balance = 39.99
output = customer.ljust(15, '.') + str(balance).rjust(10, '.')
print(output)
#John Doe............39.99
आपको आवश्यक प्रारूप के आधार पर, आप इसे चौड़ाई बदलने या अंतरिक्ष वर्ण जोड़ने के साथ ट्यून कर सकते हैं।
यदि आप बिंदुओं के दोनों ओर रिक्त स्थान नहीं रखना चाहते थे जैसा कि अन्य उत्तर से पता चलता है, तो आप इसे प्राप्त कर सकते हैं स्वरूपण निर्दिष्ट करना साथ ही:
"{:.<17s}{:.>8.2f}".format(customer, balance)
17 वर्ण चौड़े बाएँ संरेखित, .
दाएँ गद्देदार स्ट्रिंग और दाएँ संरेखित के 8 वर्ण, .
बाएँ गद्देदार, 2 दशमलव बिंदुओं की सटीकता के साथ तैरेंगे।
आप एफ-स्ट्रिंग (पायथन> = 3.6) के साथ भी ऐसा ही कर सकते हैं:
f"{customer:.<17s}{balance:.>8.2f}"
हालाँकि, यदि आप भी डॉट्स के दोनों ओर की जगह को शामिल करना चाहते हैं, तो यह मुश्किल हो जाता है। आप अभी भी ऐसा कर सकते हैं, लेकिन अंतराल को भरने से पहले आपको डबल पैड/प्रारूप या संयोजित करने की आवश्यकता है:
"{:.<16s}{:.>9s}".format(f"{customer} ", f" {balance:>.2f}")
लेकिन मुझे इसे और अधिक सुरुचिपूर्ण कहने में कुछ दर्द होगा।
आप वह सब स्वरूपण के साथ भी कर सकते हैं:
# Fill in with calculated number of "."
"{} {} {:.2f}".format(customer,
"."*(25 - (2 + len(customer) + len(f"{balance:.2f}"))),
balance)
# Similarly used for calculated width to pad with "."
"{} {:.^{}s} {:.2f}".format(customer,
"",
25 - (2 + len(customer) + len(f"{balance:.2f}")),
balance)
लेकिन फिर, और अधिक सुरुचिपूर्ण यह वास्तव में नहीं है।
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।