【发布时间】:2020-04-24 09:03:34
【问题描述】:
我有一个格式字符串fmt,在我无法控制的另一个模块中将调用format 方法。
在这个格式字符串中,如果它作为参数提供给格式方法,我想选择性地包含一个字段,否则我想省略它。
类似:
fmt = 'Optional value: {value if wasPassed("value") else ""}'
fmt.format(value = "foo") #Should return 'Optional value: foo'
fmt.format() #Should return 'Optional value: ' and not throw a Key error
由于我无法访问“格式”调用,我想以某种方式在字符串中解决这个问题。 对于上下文,我将其用作传递给日志记录模块的格式字符串,但我真的很想为上述问题提供一个通用解决方案。
在特定的用例中,我可以将自定义格式化程序传递给记录器,但这个问题的真正目的是在要格式化的字符串中的表达式中解决这个问题。 (如果那是不可能的,我也很感激能说明原因的答案,这样我就可以停止吠叫错误的树,而只需使用自定义格式化程序)
【问题讨论】:
-
由于我无法访问客户端代码,因此我无法真正将
format更改为format_map。在我的具体情况下,我可以通过为记录器指定自定义格式化程序来解决它,但它不能回答是否/如何仅在格式化字符串中的表达式内解决这个问题。
标签: python string logging formatting string-interpolation