【发布时间】:2015-11-25 21:17:18
【问题描述】:
我需要得到一个字符串中所有占位符的列表:
因此,"There're %(num_items)d items in the %(container)s" 应该产生 (('num_items', 'd'), ('container', 's'))。
我尝试了什么:
1) 我尝试查看源代码,发现
PyObject *
PyString_Format(PyObject *format, PyObject *args)
函数在 C 级别进行 % 插值。
2) 我也尝试搜索 pypi 并找到了一个 parse 库,它与 string.Formatter.parse 执行相同的操作,它正在解析 {} 样式的字符串,这不是我需要的。
警告:一个快速的正则表达式不太可能涵盖 % 替换的所有 语法,这正是我所需要的。
类似问题:How can I find all placeholders for str.format in a python string using a regex?
更新
使用相当复杂的正则表达式似乎可以很好地解决它,因此它将成为一项不错的家庭作业。
我会在两天内接受this 作为答案,我预计不会有任何新的答案。
更新2
问题是否如此本地化以至于对其他人永远不会有用 (除了那些上同一门课的人)?如果是,请投票关闭。
【问题讨论】:
-
是的,在不发表评论的情况下投票结束是一种非常好的行为
-
看来您要的是图书馆,这应该可以解释近距离投票
-
@Tim Castelijns 是的,可能。我已仔细改写问题以避免此类指控。
-
我会这样表述它正则表达式不太可能涵盖 %-substitution 的所有语法,所以我正在寻找另一种解决方案,删除任何可能看起来像你的东西'要图书馆
-
@Tim Castelijns 谢谢,已修复
标签: python regex string parsing