学过 Python 的朋友应该都知道 f-strings 是用来非常方便的格式化输出的,觉得它的使用方法无外乎就是 print(f'value = { value }',其实,f-strings 远超你的预期,今天来梳理一下它还能做那些很酷的事情。
1、懒得再敲一遍变量名
- str_value="hello,pythoncoders"
- print(f"{str_value=}")
- #str_value='hello,pythoncoders'
2、直接改变输出结果
- num_value=123
- print(f"{num_value%2=}")
- #num_value%2=1
3、直接格式化日期
- importdatetime
- today=datetime.date.today()
- print(f"{today:%Y%m%d}")
- #20211019
- print(f"{today=:%Y%m%d}")
- #today=20211019
4、2/8/16 进制输出真的太简单
- >>>a=42
- >>>f"{a:b}"#2进制
- '101010'
- >>>f"{a:o}"#8进制
- '52'
- >>>f"{a:x}"#16进制,小写字母
- '2a'
- >>>f"{a:X}"#16进制,大写字母
- '2A'
- >>>f"{a:c}"#ascii码
- '*'
5、格式化浮点数
- >>>num_value=123.456
- >>>f'{num_value=:.2f}'#保留2位小数
- 'num_value=123.46'
- >>>nested_format=".2f"#可以作为变量
- >>>print(f'{num_value:{nested_format}}')
- 123.46
6、字符串对齐,so easy!
- >>>x='test'
- >>>f'{x:>10}'#右对齐,左边补空格
- 'test'
- >>>f'{x:*<10}'#左对齐,右边补*
- 'test******'
- >>>f'{x:=^10}'#居中,左右补=
- '===test==='
- >>>x,n='test',10
- >>>f'{x:~^{n}}'#可以传入变量n
- '~~~test~~~'
- >>>
7、使用 !s,!r
- >>>x='中'
- >>>f"{x!s}"#相当于str(x)
- '中'
- >>>f"{x!r}"#相当于repr(x)
- "'中'"
8、自定义格式
- classMyClass:
- def__format__(self,format_spec)->str:
- print(f'MyClass__format__calledwith{format_spec=!r}')
- return"MyClass()"
- print(f'{MyClass():balabala%%MYFORMAT%%}')
输出如下:
- MyClass__format__calledwithformat_spec='balabala%%MYFORMAT%%'
- MyClass()
最后
Python 的 f-string 非常灵活优雅,同时还是效率最高的字符串拼接方式:
以后关于字符串的格式化,就 f-string 了。
原文链接:https://mp.weixin.qq.com/s/y8p29I4U9fZVItJUY-bFuA