找到用于字符串替换的所有替换名称

时间:2017-10-05 05:08:23

标签: python parsing string-formatting

我有用于使用名称替换变量进行格式化的模板字符串,例如

mystr = "Some {title} text {body}"
mystr_ready = mystr.format(title='abc', body='bcd')

在{}中可能有许多不同的替换变量名称,我们每次都不知道它们的名字,所以在我从数据库中取出它们进行替换之前,我需要先知道它们的名字(全部取出)来自数据库中的大表的变体太慢了。)

所以我需要意识到这个逻辑:

mystr = "Some {title} text {body}"
subs = SOMETHING(mystr)  # title, body

我知道这可以用正则表达式解决,但我想可以有更优雅和pythonic的解决方案。

1 个答案:

答案 0 :(得分:3)

使用string.Formatter

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}"))