如何用不同的表达式格式化原始字符串?
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'
)。以上是关于如何用不同的表达式格式化原始字符串?的主要内容,如果未能解决你的问题,请参考以下文章
如何用正则表达式 匹配正确的imei串号呢!imei格式:由0-9数字组成的15或者17位的串号?