如何使用正则表达式找到 python 字符串中 str.format 的所有占位符? [复制]

2024-01-11

我正在创建一个使用用户指定的格式重命名文件的类。该格式将是一个简单的字符串,其str.format将调用方法来填充空白。

事实证明,我的程序需要提取大括号中包含的变量名称。例如,一个字符串可能包含{user},这应该产生user。当然,单个字符串中会有多组大括号,我需要按照它们出现的顺序获取每组大括号的内容并将它们输出到列表中。

Thus, "{foo}{bar}"应该产生['foo', 'bar'].

我怀疑最简单的方法是使用re.split,但我对正则表达式一无所知。有人可以帮我吗?

提前致谢!


另一种可能性是使用Python的实际格式化程序 http://docs.python.org/2/library/string.html#string.Formatter.parse本身为您提取字段名称:

>>> import string
>>> s = "{foo} spam eggs {bar}"
>>> string.Formatter().parse(s)
<formatteriterator object at 0x101d17b98>
>>> list(string.Formatter().parse(s))
[('', 'foo', '', None), (' spam eggs ', 'bar', '', None)]
>>> field_names = [name for text, name, spec, conv in string.Formatter().parse(s)]
>>> field_names
['foo', 'bar']

或(较短但信息较少):

>>> field_names = [v[1] for v in string.Formatter().parse(s)]
>>> field_names
['foo', 'bar']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用正则表达式找到 python 字符串中 str.format 的所有占位符? [复制] 的相关文章

随机推荐