[Python-es] Mejorar código de crear cadena
Chema Cortes
py en ch3m4.org
Mie Mar 13 03:08:19 CET 2013
El 12/03/13 17:14, Miguel Beltran R. escribió:
> Me gusta python pero casi no lo uso por lo que estoy atorado en algo que
> estoy seguro que es sencillo de mejorar pero no se como
>
> tengo el siguiente codigo (en general)
>
> ----CÓDIGO 1----
> rst=dame_registros()
> s2="valor: 'cadena', "
> s=""
> for r in rst:
> if len(s) <> 0: s+=", "
> s+="'%s'" % (r[0])
> s2+="suggestions: [%s]" % (s)
Así de pronto:
rst=dame_registros()
s=", ".join(["'%s'" % r[0] for r in rst])
s2=("valor: 'cadena', " +
"suggestions: [%s]" % s )
Pero si te creas una función, la podrás aprovechar mejor más adelante:
SEP=", "
def to_json(arg=None, **kw):
if arg is None:
arg=kw
if isinstance(arg, str):
return "'%s'" % arg
elif isinstance(arg, (list, tuple)):
return "[%s]" % SEP.join([to_json(x) for x in arg])
elif isinstance(arg, dict):
return SEP.join( ["%s: %s" % (k,to_json(v)) for (k,v) in
arg.items()] )
else:
#default result
return to_json(str(arg))
rst=dame_registros()
res=to_json(
valor="cadena",
suggestions=[r[0] for r in rst]
)
--
Hyperreals *R: http://ch3m4.org/blog
Quarks, bits y otras criaturas infinitesimales
Más información sobre la lista de distribución Python-es