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

Pet*_*aro 7 python regex string formatting rawstring

让我们说,我们想要用正则表达式来捕获一些东西,使用rawstring来定义模式,哪个模式具有重复元素,以及内部的变量.我们还想使用format()字符串格式化表单.这该怎么做?

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

但这条线路引导我们IndexError:

# IndexError: tuple index out of range
Run Code Online (Sandbox Code Playgroud)

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

提前致谢!

Dan*_*hov 45

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

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

# => Escape is here:\n but still 15
Run Code Online (Sandbox Code Playgroud)


jam*_*lak 14

用大括号转义大括号

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

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

  • 只是为了完成......如果您碰巧需要一个在大括号内有一个变量的字符串,那么您需要三个。是的,这感觉很愚蠢,但我只是需要一个 PyLaTeX 项目 (```doc.append(r'\command{{{variable}}}')``` 附加 ```'\command{value} '````)。 (2认同)