Есть ли способ использовать python string.format, чтобы исключение не генерировалось при отсутствии индекса, вместо этого вставляется пустая строка.
result = "i am an {error} example string {error2}".format(hello=2,error2="success")
здесь, результат должен быть:
"i am an example string success"
Прямо сейчас, python бросает keyerror и останавливает форматирование. Можно ли изменить это поведение?
Спасибо
Изменить:
Существует Template.safe_substitute (даже если он не содержит паттерн, а не вставляет пустую строку), но не может что-то подобное для string.format
Желаемое поведение будет похоже на замену строки в 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 ""
Это, по-видимому, обеспечивает желаемое поведение.