f-string 竟然能有 73 个例子,我要学习下

本文详细介绍了Python的f-string格式化字符串,包括其起源、基本用法、限制、表达式格式化、调试、进制转换、对象打印、浮点数精度、百分比格式、缩进控制、转义字符、居中对齐、千位分隔、科学计数法、条件表达式、字典操作、字符串拼接、日期时间格式化、错误处理、补零、多行字符串等73个实例。通过学习,可以深入了解和掌握f-string的使用技巧。
摘要由CSDN通过智能技术生成

(给Python开发者加星标,提升Python技能)

英文:Miguel Brito,翻译:Python开发者 /  felixGuo26

在本文中,我将向你展示我认为对 Python 格式化字符串 f-string 来说最重要的一些技巧。你会通过各种样例学到多种格式化字符串的方法。总的来说,就是你会看到73个关于如何完美应用 f-string 的例子。

 

目录一览

1. f-string 是什么?

2. 用 python 做基本的文本格式化

3. f-string 局限性

4. 如何格式化表达式

5. 如何使用f-string调试你的代码

6. 如何在不同进制下格式化数字

7. 如何使用格式化字符串常量打印出对象

8. 如何在格式化字符串常量中设置浮点数精度

9. 如何将数字格式化为百分比

10. 如何调整或者增加f-string的缩进

11. 如何转义字符

12. 如何使字符串居中

13. 如何添加千位分隔符

13.1如何使用逗号作为千分位分隔符格式化数字

13.2如何使用逗号作为小数分隔符格式化数字

14.如何用科学计数法(指数计数法)格式化数字

15.在 f-string 中使用 if-else

16.如何在 f-string 中使用字典

17.如何用 f-string 拼接字符串

18.如何格式化 datetime 对象

19.如何改正 f-string 的无效语法错误

20.如何在字符串前补零

21.如何编写多行格式化字符串常量(怎样应对新行符号)

22.总结

 

1、python 中的 f-string 是什么?

 

在 Python 的历史中,字符串格式化的发展源远流长。在 python 2.6 之前,想要格式化一个字符串,你只能使用 % 这个占位符,或者string.Template 模块。不久之后,出现了更灵活更靠谱的字符串格式化方式: str.format 方法。

 

过去使用 % 做字符串格式化方式的代码样例:

>>> msg = 'hello world'
>>> 'msg: %s' % msg
'msg: hello world'

用string.format的样例:

>>> msg = 'hello world'
>>> 'msg: {}'.format(msg)
'msg: hello world'

为了进一步简化格式化方法,Eric Smith 在2015年提交了 PEP 498 -- Literal String Interpolation 提案。

PEP 498 提出了一种新的字符串插值方法,该方法可以更简单便捷的使用 str.format 方法。你只需要在字符串开头加上一个字母 f,形成 f”” 的格式就可以了。

 

使用f-string的样例:

>>> msg = 'hello world'
>>> f'msg: {msg}'
'msg: hello world'

这就可以了!再也不需要用 string.format 或者 % 了。不过 f-string 并不能完全替代 str.format。本文也将列举出这两者并不通用的情况。

 

2、基本的字符串格式化

如上文所述,使用f-string格式化字符串十分简单。唯一的要求就是给它一个有效的表达式。f-string 也可以用大写F开头或者与 r 原始字符串结合使用。但是你不能将其与 b”” 或者 ”u” 混用。

 

>>> book = "The dog guide"
>>> num_pages = 124
>>> f"The book {book} has{num_pages} pages"
'The book The dog guide has 124 pages'


>>> F"The book {book} has{num_pages} pages"
'The book The dog guide has 124 pages'
>>> print(Fr"The book {book} has{num_pages} pages\n")


The book The dog guide has 124 pages\n 
>>> print(FR"The book {book} has{num_pages} pages\n")
The book The dog guide has 124 pages\n
>>> print(f"The book {book} has{num_pages} pages\n")
The book The dog guide has 124 pages

差不多就这些!下一节中,我会用一些例子向你展示一些你用f-string能做或不能做的事儿。

 

3、f-string 的限制

虽然f-string十分的便捷,但它并不能完全代替str.format。f-string在表达式出现的上下文中进行求值计算。根据PEP498,这意味着该表达式可以获取所有局部和全局变量。而且该表达式是在运行时计算的表达式。如果在 { <expr> } 之中使用的表达式无法被计算,就会跳出如下异常。

>>> f"{name}"
---------------------------------------------------------------------------
NameError                                 Traceback(most recent call last)
<ipython-input-1-f0acc441190f> in<module>
----> 1 f"{name}"
NameError: name 'name' is not defined

这对 str.format 来说就不是问题,你可以提前定义一个模板字符串,并在之后调用.format方法时再传递上下文信息。

>>> s = "{name}"
>>> s.format(name="Python")
'Python'
>>> print(s)
{name}

另外还有个限制是,你不能在f-string中使用行内注释。

>>> f"My name is {name #name}!"
  File "<ipython-input-37-0ae1738dd871>", line 1
    f"My name is {name #name}!"
    ^
SyntaxError: f-string expression part cannot include '#'

4、如何格式化一个表达式

如果不想定义变量,那你可以在大括号中使用常量。Python会计算该表达式并显示最终计算结果。

>>> f"4 * 4 is {4 * 4}"
'4 * 4 is 16'

或者你可以...

>>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值