Python 在模板字符串中列出项目

Python 在模板字符串中列出项目,python,Python,我肯定我遗漏了什么,有没有办法在一个实例中列出所有模板?或者我真的必须还原到正则表达式才能找到它们吗?您可以使用模板使用的正则表达式并提取名称: >>> s = Template('$who likes $what $$ ${another}') >>> [m.group('named') or m.group('braced') for m in s.pattern.finditer(s.template) if m.group('named

我肯定我遗漏了什么,有没有办法在一个实例中列出所有模板?或者我真的必须还原到正则表达式才能找到它们吗?

您可以使用模板使用的正则表达式并提取名称:

>>> s = Template('$who likes $what $$ ${another}')
>>> [m.group('named') or m.group('braced')
    for m in s.pattern.finditer(s.template)
    if m.group('named') or m.group('braced')]
['who', 'what', 'another']
文档中说regex有4个捕获组:

  • 转义–此组与中的转义序列匹配,例如$$ 默认模式
  • 已命名–此组与未加支撑的占位符匹配 名称它不应在捕获组中包含分隔符
  • 大括号–此组与大括号内的占位符名称匹配;它应该 在捕获组中不包括分隔符或大括号
  • 无效–此组匹配任何其他分隔符模式(通常为 单个分隔符),并且它应该出现在正则表达式中的最后一个 表情

您可以使用模板使用的正则表达式并提取名称:

>>> s = Template('$who likes $what $$ ${another}')
>>> [m.group('named') or m.group('braced')
    for m in s.pattern.finditer(s.template)
    if m.group('named') or m.group('braced')]
['who', 'what', 'another']
文档中说regex有4个捕获组:

  • 转义–此组与中的转义序列匹配,例如$$ 默认模式
  • 已命名–此组与未加支撑的占位符匹配 名称它不应在捕获组中包含分隔符
  • 大括号–此组与大括号内的占位符名称匹配;它应该 在捕获组中不包括分隔符或大括号
  • 无效–此组匹配任何其他分隔符模式(通常为 单个分隔符),并且它应该出现在正则表达式中的最后一个 表情

这里有一种完全不同的方法(由Lutz Horn的答案触发,但要简单得多):


给出预期输出。

这里有一种完全不同的方法(由Lutz Horn的答案触发,但简单得多):


给出了预期的输出。

Nice将要评论它没有捕获大括号,但是更新现在捕获了。Nice将要评论它没有捕获大括号,但是更新现在捕获了。