¿Hay alguna manera de utilizar python string.format de modo que no se produzca ninguna excepción cuando falta un índice, en su lugar se inserta una cadena vacía?formato de cadena python suprimir/silencioso keyerror/indexerror
result = "i am an {error} example string {error2}".format(hello=2,error2="success")
aquí, resultado debe ser:
"i am an example string success"
En este momento, Python lanza una KeyError y se detiene el formateo. ¿Es posible cambiar este comportamiento?
Gracias
Editar:
Existe Template.safe_substitute (aun que deja el patrón intacta en lugar de insertar una cadena vacía), pero no pudo algo similar para string.format
El el comportamiento deseado sería similar a la sustitución de cadenas en php.
class Formatter(string.Formatter):
def get_value(self,key,args,kwargs):
try:
if hasattr(key,"__mod__"):
return args[key]
else:
return kwargs[key]
except:
return ""
Esto parece proporcionar el comportamiento deseado.
También puede usar 'str.format_map()' como se describe en [esta respuesta] (http://stackoverflow.com/a/17215533/877069). –