min*_*der 0 regex string format repeat python-3.x
我想根据变量的值进行正则表达式搜索。
在 Py2.x 中,这非常有效:
pattern = re.compile(r"\b[a-zA-Z]{%(min_length)d,}\b" % locals())
Run Code Online (Sandbox Code Playgroud)
当我尝试将它移植到新的 str.format() 符号时,我得到如下信息:
pattern = re.compile(r"\b[a-zA-Z]{{0},}\b".format(min_length))
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误,因为重复的大括号与 str.format() 的大括号混淆了:
ValueError: Single '}' encountered in format string
Run Code Online (Sandbox Code Playgroud)
我相信你能想到更多这样的例子,其中 format() 与重复发生冲突。
通过 str.format() 为正则表达式的重复提供外部值的正确方法是什么?% 运算符在 Py3 中不起作用。
只需使用旧版本%——Python 3.x 仍然支持字符串格式,并且不会消失。如果您坚持使用新语法,请将不指示字段的大括号加倍:
pattern = re.compile(r"\b[a-zA-Z]{{{0},}}\b".format(min_length))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3132 次 |
| 最近记录: |