f-Strings可从Python 3.6获得,对于格式化字符串非常有用:

>>> n='you'
>>> f'hello {n}, how are you?'
'hello you, how are you?'

阅读更多关于他们的Python 3's f-Strings: An Improved String Formatting Syntax (Guide)篇文章.我发现了一个有趣的模式:

请注意,使用三个大括号将导致字符串中只有一个大括号:

>>> f"{{{74}}}"
'{74}'

但是,如果使用三个以上的大括号,则可以显示更多的大括号:

>>> f"{{{{74}}}}"
'{{74}}'

事实就是这样:

>>> f'{74}'
'74'

>>> f'{{74}}'
'{74}'

现在如果我们从2 {到3,结果是一样的:

>>> f'{{{74}}}'
'{74}'           # same as f'{{74}}' !

所以我们最多需要4个!({{{{)要获得两个大括号作为输出:

>>> f'{{{{74}}}}'
'{{74}}'

这是为什么?从那一刻起,如果有两个大括号,Python就需要一个额外的大括号,会发生什么?

推荐答案

双大括号避开大括号,因此不会发生插值:{{{}}}.74仍然是不变的字符串,'74'.

使用三个大括号时,外部的双括号将被转义,如上所述.另一方面,内部大括号导致值74的常规字符串插值.

也就是说,字符串f'{{{74}}}'相当于f'{{ {74} }}',但没有空格(或者相当于'{' + f'{74}' + '}').

用变量替换数值常量时,可以看到不同之处:

In [1]: x = 74

In [2]: f'{{x}}'
Out[2]: '{x}'

In [3]: f'{{{x}}}'
Out[3]: '{74}'

Python-3.x相关问答推荐

为什么我必须在绘制椭圆时代码等于两次?''

如何获得大Pandas 的常见时间间隔

将数据帧扩展为矩阵索引

需要找到完全匹配并使用正则表达式替换

将水平堆叠的数据排列成垂直

仅当从 USB 摄像头接收到新图像时才处理图像

裁剪复数以解决 exp 中的溢出错误

机器学习实验笔记本的工作区 url

FastAPI - 调用 API 时设置 response_model_exclude

使用 Python 解析 JSON 嵌套字典

为什么 setattr 在绑定方法上失败

python中是否有大于但小于函数?

使用 Python 3 按行进行分析

pip install dryscrape 失败并显示错误:[Errno 2] 没有这样的文件或目录:'src/webkit_server'?

python asyncio - 如何等待取消的屏蔽任务?

定义 True,如果没有定义,会导致语法错误

为什么 string.maketrans 在 Python 3.1 中不起作用?

如何从 seaborn / matplotlib 图中删除或隐藏 x 轴标签

有没有办法在多个线程中使用 asyncio.Queue ?

如何从 Base64 转换为字符串 Python 3.2