我想根据变量的值进行regexp搜索。
在Py2.x中,这非常有效:
pattern = re.compile(r"\b[a-zA-Z]{%(min_length)d,}\b" % locals())
当我尝试将其移植到新的str.format()表示法时,我会得到类似的结果:
pattern = re.compile(r"\b[a-zA-Z]{{0},}\b".format(min_length))
这给了我一个错误,因为重复的大括号与来自str.format()的大括号混淆:
ValueError: Single '}' encountered in format string
我确信你可以想到更多像这样的例子,其中format()与重复发生冲突。
通过str.format()为regexp的重复提供外部值的正确方法是什么? %运算符在Py3中不起作用。
答案 0 :(得分:3)
只需使用旧版本 - Python 3.x仍支持%
字符串格式,它不会消失。如果您坚持使用新语法,请将未指示字段的大括号加倍:
pattern = re.compile(r"\b[a-zA-Z]{{{0},}}\b".format(min_length))