我有用于使用名称替换变量进行格式化的模板字符串,例如
mystr = "Some {title} text {body}"
mystr_ready = mystr.format(title='abc', body='bcd')
在{}中可能有许多不同的替换变量名称,我们每次都不知道它们的名字,所以在我从数据库中取出它们进行替换之前,我需要先知道它们的名字(全部取出)来自数据库中的大表的变体太慢了。)
所以我需要意识到这个逻辑:
mystr = "Some {title} text {body}"
subs = SOMETHING(mystr) # title, body
我知道这可以用正则表达式解决,但我想可以有更优雅和pythonic的解决方案。
答案 0 :(得分:3)
import string
parser = string.Formatter().parse
def fmt_fields(fmt):
return [f[1] for f in parser(fmt) if f[1] is not None]
print(fmt_fields("Some {title} text {body}"))