मैं स्वीकार करेंगे @ जीन फ़्राँस्वा Fabre के जवाब यह है कि मूल रूप से मेरी सवाल का जवाब के रूप में मैं यह कह रही है कि (कम से कम अब के लिए) वहाँ केवल स्ट्रिंग स्वरूपण का उपयोग कर इस को कोई जवाब नहीं है द्वारा निर्दिष्ट (यानी अगर बनाने के लिए चर केवल एच, एम & डब्ल्यू अतिरिक्त प्रसंस्करण के बिना हैं)।
हालांकि, उनकी जवाब में के रूप में तारों पर बूलियन ऑपरेटरों की अवधारणा का उपयोग कर मुझे लगता है कि मैं का उपयोग करेगा:
print("{}{}{} {}".format(h,m and " " ,m , w))
इस व्यक्ति को यह लग रहा है कि 4 मूल्यों से स्वरूपित किया जा रहा है पढ़ने देने का नुकसान है (जो तकनीकी रूप से मामला है लेकिन अर्थात् नहीं) लेकिन मुझे लगता है कि यहां अभिव्यक्तियों की कमी और सादगी नकारात्मक पहलू को दूर करती है।
पठनीयता अभी तक के रूप में @Tsingyi ने सुझाव दिया parametrized स्वरूपों का उपयोग लेकिन का उपयोग करके सुधार किया जा सकता है:
print("{}{pad}{} {}".format(h, m , w, pad = m and " "))
नोट: उम्मीद है कि
में:
लेखन के समय का पालन नहीं कर काम कर रहा है कोड
print("{}{: >?} {}".format(h,m,w))
"के शब्दों को वैकल्पिक रूप से
(यदि मीटर तो) सही और एक additio साथ पैड को संरेखित: भविष्य शायद हम जैसे कुछ कर सकता है उसके बाईं ओर एनएएल अंतरिक्ष ", या
print("{} {: <?}{}".format(h,m,w))
के शब्दों के साथ
" वैकल्पिक रूप से (यदि मीटर तो) यह छोड़ दिया और पैड करने का अधिकार "के लिए एक अतिरिक्त स्थान से तालमेल
समान वेरिएंट उपयोगी हो सकता है मुद्रा प्रतीकों के वैकल्पिक स्वरूपण के लिए उदाहरण के लिए
print("{:$>?}{}".format(s))
या तो एक खाली स्ट्रिंग या $ 123
एक अंतिम (लंबी) टिप्पणी उपज के लिए: इस मुद्दे मैंने सोचा था कि मैं इस तरह कुछ करने के लिए सक्षम हो सकता है की मेरी शोध के दौरान कुछ बिंदु पर :
def extend_string_formatting():
try:
'{:left-pad-if-not-empty}'.format('')
except ValueError:
original_formatter=str.__format__
def extended_formatter(self, format):
if (format == 'left-pad-if-not-empty'):
return ' ' + self if self else ''
return original_formatter(self, format)
str.__format__=extended_formatter
extend_string_formatting()
लेकिन यह है कि इस के साथ परिणाम पता चला है:
Traceback (most recent call last):
File "<input>", line 3, in extend_string_formatting
ValueError: Invalid format specifier
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "<input>", line 12, in extend_string_formatting
TypeError: can't set attributes of built-in/extension type 'str'
शायद इसे यहां वर्णित कुछ की तरह हासिल किया जा सकता है: https://stackoverflow.com/a/15975791/25412
मैंने दस्तावेज़ों की जांच की, मुझे नहीं लगता कि आप कर सकते हैं। –