如何用不同的表达式格式化原始字符串?

2022-01-12 00:00:00 python string regex formatting rawstring

问题描述

比方说,我们想用正则表达式捕捉一些东西,使用 rawstring 来定义模式,哪个模式有重复的元素,里面有变量.而且我们还想使用 format() 字符串格式化形式.如何做到这一点?

Let's say, we want to catch something with regex, using rawstring to define the pattern, which pattern has repeating elements, and variables inside. And we also want to use the format() string formatting form. How to do this?

import re
text = '"""!some text'
re.findall(r'"{3}{symbol}somestext'.format(symbol='!'), text)

但是这一行将我们引向一个IndexError:

But this line leads us to an IndexError:

# IndexError: tuple index out of range

所以,我的问题是:如何格式化原始字符串,如果它有格式化大括号表达式,并在里面重复大括号表达式?

So, my question is: how to format a raw string if it has formatting curly-braces expression, and repeating curly-braces expression inside?

提前致谢!


解决方案

用大括号转义大括号

>>> import re
>>> text = '"""!some text'
>>> re.findall(r'"{{3}}{symbol}somestext'.format(symbol='!'), text)
['"""!some text']

但是在这种情况下最好只使用 % 格式.

However it is better to just use % formatting in this situation.

相关文章