2011-02-08 12 views
19

मैं आलसी तर्क के साथ एक प्रारूप स्ट्रिंग का निर्माण करने की कोशिश कर रहा हूँ, जैसे मैं की तरह ख़ाली की जरूरत:अजगर, प्रारूप स्ट्रिंग

"%s \%s %s" % ('foo', 'bar') # "foo %s bar" 

मैं यह कैसे कर सकते हैं?

उत्तर

30
"%s %%s %s" % ('foo', 'bar') 

आप की जरूरत %%

2
"%s %%s %s" % ('foo', 'bar') # easy! 

डबल% वर्ण आप प्रारूप तार में% की डाल दें।

+1

बेवकूफ 30 चरित्र प्रतिबंध:/ –

+0

मैं सहमत हूँ। :-) [टिप्पणियों पर भी] – payne

1

कुछ देर प्रतीक्षा प्रतिशत प्रतीक का उपयोग करें।

In [17]: '%s %%s %s' % ('foo', 'bar') 
Out[17]: 'foo %s bar' 
2

%%% प्रतीक निकल जाता है। तो बुनियादी तौर पर आप सिर्फ लिखने के लिए है:

"%s %%s %s" % ('foo', 'bar') # "foo %s bar" 

और तुम उत्पादन करने की जरूरत है अगर कभी एक प्रतिशत या कुछ और:

>>> "%s %s %%%s" % ('foo', 'bar', '10') 
'foo bar %10' 
17
अजगर 2.6 के साथ

:

>>> '{0} %s {1}'.format('foo', 'bar') 
'foo %s bar' 

या अजगर 2.7 के साथ:

>>> '{} %s {}'.format('foo', 'bar') 
'foo %s bar' 
0

यदि आप डॉन करते हैं 'टी आदेश तर्क 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) 
0

अजगर 3.6 अब समर्थन करता है आशुलिपि शाब्दिक स्ट्रिंग प्रक्षेप पीईपी 498. आपके उपयोग के मामले के लिए के साथ, नई वाक्य रचना की अनुमति देता है:

var1 = 'foo' 
var2 = 'bar' 
print(f"{var1} %s {var2}") 
संबंधित मुद्दे