2010-05-04 2 views
1
#!/usr/bin/python 

from string import Template 

s = Template('$x, go home $x') 
s.substitute(x='lee') 

print s 

erreur que je reçois estchaînes de modèle Python 2.5 erreur

<string.Template object at 0x81abdcc> 

résultats souhaités je cherche est: lee, rentre chez toi lee

Répondre

7

Vous devez regarder la valeur de retour de substitute. Il vous donne la chaîne avec des substitutions effectuées.

print s.substitute(x='lee') 

L'objet modèle lui-même (s) n'est pas modifié. Cela vous donne la possibilité d'effectuer plusieurs substitutions avec le même objet modèle.

3

Vous n'obtenez pas d'erreur: vous obtenez exactement ce que vous demandez - le modèle lui-même. Pour obtenir le résultat souhaité,

print s.substitute(x='lee') 

modèles, comme les chaînes, sont pas objets mutables: une méthode que vous appelez sur un modèle (ou chaîne) ne peut jamais modifier ce modèle - il ne peut produire un résultat séparé que vous pouvez utiliser. Ceci, bien sûr, s'applique à la méthode .substitute. Vous l'appelez, mais en ignorant le résultat, puis en imprimant le modèle, vous vous attendez sans doute à ce que le modèle lui-même soit modifié, mais ce n'est pas comme ça que ça fonctionne.