मैं आलसी तर्क के साथ एक प्रारूप स्ट्रिंग का निर्माण करने की कोशिश कर रहा हूँ, जैसे मैं की तरह ख़ाली की जरूरत:अजगर, प्रारूप स्ट्रिंग
"%s \%s %s" % ('foo', 'bar') # "foo %s bar"
मैं यह कैसे कर सकते हैं?
मैं आलसी तर्क के साथ एक प्रारूप स्ट्रिंग का निर्माण करने की कोशिश कर रहा हूँ, जैसे मैं की तरह ख़ाली की जरूरत:अजगर, प्रारूप स्ट्रिंग
"%s \%s %s" % ('foo', 'bar') # "foo %s bar"
मैं यह कैसे कर सकते हैं?
"%s %%s %s" % ('foo', 'bar')
आप की जरूरत %%
"%s %%s %s" % ('foo', 'bar') # easy!
डबल% वर्ण आप प्रारूप तार में% की डाल दें।
कुछ देर प्रतीक्षा प्रतिशत प्रतीक का उपयोग करें।
In [17]: '%s %%s %s' % ('foo', 'bar')
Out[17]: 'foo %s bar'
>>> "%s %%s %s" % ('foo', 'bar')
'foo %s bar'
%%
%
प्रतीक निकल जाता है। तो बुनियादी तौर पर आप सिर्फ लिखने के लिए है:
"%s %%s %s" % ('foo', 'bar') # "foo %s bar"
और तुम उत्पादन करने की जरूरत है अगर कभी एक प्रतिशत या कुछ और:
>>> "%s %s %%%s" % ('foo', 'bar', '10')
'foo bar %10'
:
>>> '{0} %s {1}'.format('foo', 'bar')
'foo %s bar'
या अजगर 2.7 के साथ:
>>> '{} %s {}'.format('foo', 'bar')
'foo %s bar'
यदि आप डॉन करते हैं 'टी आदेश तर्क suplied हो जाएगा पता है, तुम स्ट्रिंग टेम्पलेट का उपयोग कर सकते हैं
यहाँ एक आत्म निहित वर्ग कि यह कार्यक्षमता (केवल कीवर्ड तर्क के लिए) के साथ एक str
के रूप में बना हुआ है
class StringTemplate(str):
def __init__(self, template):
self.templatestr = template
def format(self, *args, **kws):
from string import Template
#check replaced strings are in template, remove if undesired
for k in kws:
if not "{"+k+"}" in self:
raise Exception("Substituted expression '{k}' is not on template string '{s}'".format(k=k, s=self))
template= Template(self.replace("{", "${")) #string.Template needs variables delimited differently than str.format
replaced_template= template.safe_substitute(*args, **kws)
replaced_template_str= replaced_template.replace("${", "{")
return StringTemplate(replaced_template_str)
अजगर 3.6 अब समर्थन करता है आशुलिपि शाब्दिक स्ट्रिंग प्रक्षेप पीईपी 498. आपके उपयोग के मामले के लिए के साथ, नई वाक्य रचना की अनुमति देता है:
var1 = 'foo'
var2 = 'bar'
print(f"{var1} %s {var2}")
बेवकूफ 30 चरित्र प्रतिबंध:/ –
मैं सहमत हूँ। :-) [टिप्पणियों पर भी] – payne