2012-01-17 25 views
15

Estoy tratando de escribir las cosas de la manera de python, pero no estoy seguro de cómo hacerlo bien. En el siguiente código, quiero leer obj.subject y colocarlo en var subject, también leer obj.body y colocarlo en body. Primero quiero leer las variables kwargs y buscar las palabras clave dentro de la cadena para reemplazar, si no existe ninguna, seguir adelante.loop a través de kwargs en python

¿Alguien me puede ayudar?

for key in kwargs: 
     subject = str(obj.subject).replace('[%s]' % upper(key), kwargs[key]) 


    for key in kwargs: 
     body = str(obj.body ).replace('[%s]' % upper(key), kwargs[key]) 

    return (subject, body, obj.is_html) 
+2

¿Puede mostrar la entrada de ejemplo ('obj.subject' y' obj.body' así como 'kwargs') y la salida deseada? Es difícil decir lo que estás preguntando sin eso. – dcrosta

Respuesta

17

pienso que usted está buscando algo como esto:

subject = obj.subject 
body = obj.body 
for key, value in kwargs.iteritems(): 
    subject = subject.replace('[%s]' % key.toupper(), value) 
    body = body.replace('[%s]' % key.toupper(), value) 

return (subject, body, obj.is_html) 
18

Sólo una nota rápida para aquellos actualización a Python 3.

En Python 3 es casi el mismo:

subject = obj.subject 
body = obj.body 
for key, value in kwargs.items(): 
    subject = subject.replace('[{0}]'.format(key.toupper()), value) 
    body = body.replace('[{0}]'.format(key.toupper()), value) 

return (subject, body, obj.is_html) 

Observe que iteritems() se convierte en items() como dict ya no tiene el método iteritems.

+0

Nuevo en python y aprendizaje v3 ... esta nota fue MUY útil. – Beege