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

Posted

技术标签:

【中文标题】如何用不同的表达式格式化原始字符串?【英文标题】:How to format raw string with different expressions inside? 【发布时间】:2013-05-21 05:07:17 【问题描述】:

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

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

但是这条线将我们引向IndexError

# IndexError: tuple index out of range

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

提前致谢!

【问题讨论】:

【参考方案1】:

使用f-strings(在 Python 3.6 中引入):

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

# => Escape is here:\n but still 15

【讨论】:

【参考方案2】:

用大括号转义大括号

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

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

【讨论】:

只是为了完成......如果您碰巧需要一个在大括号内包含变量的字符串,那么您需要三倍。是的,感觉很愚蠢,但我只需要 PyLaTeX 项目(doc.append(r'\commandvariable') 附加 '\commandvalue')。

以上是关于如何用不同的表达式格式化原始字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何用格式解析 jqwidgets (jqx) 日期?

如何用正则表达式 匹配正确的imei串号呢!imei格式:由0-9数字组成的15或者17位的串号?

如何用正则表达式验证用户名

Pandas DF:如何用分隔符(;CSV 格式)将 '-' 替换为 '_'

如何用正则表达式在JS中匹配出相应的拓展名?

如何用前导零格式化资源字符串? [复制]