2011-01-30 5 views

cevap

20
"{name} is a {adjective} {noun} that {verb}".format(**locals()) 
  • locals() (bir sözlük olarak) geçerli ad boşluğuna başvuru verir.
  • **locals(), sözlüğü bağımsız değişkenlere dönüştürür (f(**{'a': 0, 'b': 1}), f(a=0, b=1)).
  • .format()"the new string formatting" olup, bu arada çok daha fazla şey yapabilir (örneğin, ilk konumsal bağımsız değişkenin ad niteliği için {0.name}).

Alternatif string.template (yine halk ile değişmeziyle yedekli {'name': name, ...} dicti kaçınmak istiyorsanız).

+3

Daha fazla bilgi ve seçenek için: http://docs.python.org/library/stdtypes.html#string-formatting – Harmen

+0

@Harem: +1 Aslında bu bağlantıyı arıyordum, ancak PEP'i ilk olarak buldum. arama algoritmamdaki bazı kusurlar. – delnan

+1

Yerlilere() bir işleve geçmek genellikle çok kötü bir fikirdir. Hangi değişkenlerin aslında iletilmesi amaçlandığını ve aslında yerliler olduğunu söylemek imkansız olan parametre sürünmesine yol açar. –

4

yapın:

piton 3 eklenti Pars için
print name,'is a',adjective,noun,'that',verb 

:

print(name,'is a',adjective,noun,'that',verb) 

Bir dizeye kaydetmeniz gerekiyorsa, + işleciyle bağlantı kurmanız gerekir ve boşluk eklemeniz gerekir. print, , parametresinin sonuna bir boşluk girmezse, bu durumda, satırsonu sonlandırır.

dize var kaydetmek için:

result = name+' is a '+adjective+' '+noun+' that '+verb 
+0

Not;) (sadece – delnan

+0

Sabit sayesinde delnan) parens bırakın. –

5

kullanım Pyhon 2'de, bu yerine bazı dizeleri bir demet yazdırır olduğunu string.Template

>>> from string import Template 
>>> t = Template("$name is a $adjective $noun that $verb") 
>>> t.substitute(name="Lionel", adjective="awesome", noun="dude", verb="snores") 
'Lionel is a awesome dude that snores' 
+0

Müthiş.Flattery seni alır * her yerde * – Lionel

+0

Her ne olursa olsun, değil mi? :) – bgporter