2011-02-08 8 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' 
4
>>> "%s %%s %s" % ('foo', 'bar') 
'foo %s bar' 
2

%%% 기호를 이스케이프합니다. 그래서 기본적으로 당신은 단지 작성해야합니다 :

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

을 그리고 당신은 출력에 이제까지 필요로하는 경우 백분율 또는 무언가 : 파이썬 2.6

>>> "%s %s %%%s" % ('foo', 'bar', '10') 
'foo bar %10' 
17

:

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

또는 파이썬 2.7와

:

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

'T는 여기에

가 (단지 키워드 인수)이 기능으로 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 지금 지원의 당신이 문자열 템플릿을 사용할 수 있습니다, 인수가 suplied됩니다 순서를 알고 속기 리터럴 문자열 보간 사용 사례를 들어 PEP 498으로, 새로운 구문이 있습니다 :

var1 = 'foo' 
var2 = 'bar' 
print(f"{var1} %s {var2}")