29

比方说,我们想用正则表达式捕获一些东西,使用 rawstring 来定义模式,该模式具有重复的元素和内部的变量。而且我们还想使用format()字符串格式化形式。这个怎么做?

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

但是这条线将我们引向一个IndexError

# IndexError: tuple index out of range

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

提前致谢!

4

2 回答 2

51

使用f 字符串(在 Python 3.6 中引入):

a = 15
print(fr'Escape is here:\n but still {a}')

# => Escape is here:\n but still 15
于 2019-10-10T10:45:57.327 回答
28

用大括号转义大括号

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

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

于 2013-05-25T22:51:03.173 回答