我有一个准备好的字符串,例如my_string = 'My name is {name}.'
我有kwargs字典,例如:
format_kwargs = {
'name': 'John',
...
}
这样我就可以用这种方式格式化字符串:my_string.format(**format_kwargs)
这一切都很好。问题是我想确定字符串中的键是什么,所以我不会不必要地计算kwargs。也就是说,默认情况下,我在这些字符串中使用了一组关键字,但并非所有关键字都在所有字符串中使用。它们基本上是向用户显示的常规消息,例如“{name},您的帐户已成功创建!”。
我想做类似的事情:
format_kwargs = {}
if 'name' in <my_string.keys>:
format_kwargs['name'] = self.get_user().name
if '...' in <my_string.keys>:
format_kwargs['...'] = some_method_...()
my_string.format(**format_kwargs)
如何检索密钥?
编辑:
简单if 'name' in my_string
不起作用,因为它也会匹配{parent_name}
或'The name change was not successful.'
答案 0 :(得分:0)
使用string.Formatter
from string import Formatter
s = 'Hello {name}. Are you {debil_status}'
keys = [i[1] for i in Formatter().parse(s)]
print keys
>>> ['name', 'debil_status']