C'è un modo per utilizzare python string.format in modo che non venga generata alcuna eccezione quando manca un indice, invece viene inserita una stringa vuota.python string format sopprimi/silent keyerror/indexerror
result = "i am an {error} example string {error2}".format(hello=2,error2="success")
qui, risultato dovrebbe essere:
"i am an example string success"
In questo momento, Python lancia un KeyError e ferma la formattazione. È possibile modificare questo comportamento?
Grazie
Edit:
Esiste Template.safe_substitute (anche che lascia intatto il modello invece di inserire una stringa vuota), ma non poteva qualcosa di simile per string.format
L' il comportamento desiderato sarebbe simile alla sostituzione delle stringhe in 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 ""
Questo sembra fornire il comportamento desiderato.
È possibile anche usare 'str.format_map()', come descritto in [questa risposta] (http://stackoverflow.com/a/17215533/877069). –