Gibt es eine Möglichkeit, python string.format zu verwenden, so dass keine Ausnahme ausgelöst wird, wenn ein Index fehlt, stattdessen eine leere Zeichenfolge eingefügt wird. RechtsPython-String-Format unterdrücken/stille keyerror/indexerror
"i am an example string success"
jetzt, Python wirft einen KeyError und stoppt Formatierung:
result = "i am an {error} example string {error2}".format(hello=2,error2="success")
hier sollte Folge sein. Ist es möglich, dieses Verhalten zu ändern?
Dank
Edit:
Es Template.safe_substitute existiert (auch das lässt das Muster intakt stattdessen eine leere Zeichenfolge einzufügen), konnte aber nicht etwas ähnliches für string.format
Die Das gewünschte Verhalten wäre ähnlich wie 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 ""
Dies scheint das gewünschte Verhalten zu bieten.
Sie können auch mit 'str.format_map()', wie in [diese Antwort] (http://stackoverflow.com/a/17215533/877069). –