首页 > 编程语言 >f-strings: Python字符串处理的瑞士军刀

f-strings: Python字符串处理的瑞士军刀

时间:2022-12-17 17:48:11浏览次数:87  
标签:格式化 Python python num print PI 瑞士军刀 strings today

从 3.6 开始,Python 新增了一个格式化字符串的方法,称之为 f-string。

其用法就是在python原始字符串的基础上增加 f/F 前缀,以大括号 {} 标明被替换的字段。

f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式。

变量嵌入 & 变量拼接

改变以往占位符或加号拼接的方式,使得字符串拼接更加简单直观,可读性也更好。

name = "Tom"

print(f"I'm {name}")
# I'm Tom

表达式求值

print(f"3 x 2 = {3*2}")
# 3 x 2 = 6

print(f"{3 * 2 = }")
# 3 * 2 = 6

调用函数

name = "Tom"

print(f"I'm {name.lower()}")
# I'm tom

多行string

name, job = "tom", "student"

s = f"""I'm {name.capitalize()}, 
and I'm a {job.capitalize()}"""

print(s)
"""
I'm Tom, 
and I'm a Student
"""

对齐

先看下语法规则:

Syntax: {:[width][.precision][type]}

对齐效果由width控制:

  • <:左对齐
  • >:右对齐(默认)
  • ^:居中对齐
word = "python"

>>> f"|{word:<10}|"
'|python    |'

>>> f"|{word:>10}|"
'|    python|'

>>> f"|{word:^10}|"
'|  python  |'

带有补全的对齐效果:

# 本例用小数点来补全空余内容
>>> f"|{word:.<10}|"
'|python....|'

>>> f"|{word:.>10}|"
'|....python|'

>>> f"|{word:.^10}|"
'|..python..|'

例子:

格式化一个日期,要求月份、天数用两位表示,不足两位补0

year, month, day = 2022, 1, 1

>>> f"{year}-{month:0>2}-{day:0>2}"
'2022-01-01'

数字格式化

Syntax: {:[width][.precision][type]}

由precision指定精度,type对应数据类型。

type:

  • s:字符串格式(默认)
  • d:整型
  • e:科学计数,默认precision为6
  • f:浮点数,默认precision为6
  • %:百分比格式,默认浮点数格式,外加百分比格式化

浮点数精度格式化

同时会自动四舍五入。

pi = 3.141592654
print(f"PI = {pi:.2f}")
# PI = 3.14

print(f"PI = {pi:.3f}")
# PI = 3.142

科学计数

print(f"{pi:e}")
# 3.141593e+00

print(f"{pi:.2e}")
# 3.14e+00

百分比格式化

兼顾小数位保留和百分号格式化功能。

print(f"PI = {pi:.3%}")
# PI = 314.159%

print(f"PI = {pi:.2%}")
# PI = 314.16%

千位分隔符

使用 , 格式化数字展示(常用于金额),易于阅读

>>> f"{234234234:,}"
'234,234,234'

>>> f"{234234234.1314:,.2f}"
'234,234,234.13'

进制转换

先看看python中常用的用法及其效果:

num = 23
bin(num)	# '0b10111'
oct(num)	# '0o27'
hex(num)	# '0x17'

在f-string中,b、o、d、x分别代表二进制、八进制、十进制、十六进制

f"{num:b}"	# '10111'
f"{num:o}"	# '27'
f"{num:d}"	# '23'
f"{num:x}"	# '17'

要想实现常用用法的效果,进制规则代码前需要加#号:

f"{num:#b}"	# '0b10111'
f"{num:#o}"	# '0o27'
f"{num:#d}"	# '23'
f"{num:#x}"	# '0x17'

lambda表达式

>>> f"result is {(lambda x: x**2+1)(5)}"
'result is 26'

日期格式化

日期格式信息,适用于 datedatetimetime 对象

today = datetime.datetime.today()
f"{today:%Y}"			# '2022'
f"{today:%Y-%m}"		# '2022-12'
f"{today:%Y-%m-%d}"		# '2022-12-16'

f"{today:%F}"		# '2022-12-16'
f"{today:%D}"		# '12/16/22'
f"{today:%X}"		# '21:01:27'
f"{today:%F %X}"	# '2022-12-16 21:01:27'

参考

标签:格式化,Python,python,num,print,PI,瑞士军刀,strings,today
From: https://www.cnblogs.com/iorson/p/16989227.html

相关文章

  • Python学习:内建属性、内建函数的教程
    1.内建属性python3中查看类的内建属性和方法:>>>classPerson:...pass...>>>dir(Person)['__class__','__delattr__','__dict__','__dir__','__doc_......
  • Python之threading: 带你了解多线程的强大威力!
    前言什么是多线程多线程是指在一个程序中同时创建和使用多个执行流(thread)来执行不同的任务。这样多个任务就可以同时进行,从而提高程序的执行效率。在python使用多线......
  • 27python的匿名函数与map函数
    在Python中,可以使用lambda关键字来创建匿名函数。这些函数不需要名字,因为它们通常只使用一次。下面是一个例子:lambdax:x**2这是一个计算平方的匿名函数。它接受......
  • 27python的匿名函数
    在Python中,可以使用lambda关键字来创建匿名函数。这些函数不需要名字,因为它们通常只使用一次。下面是一个例子:lambdax:x**2这是一个计算平方的匿名函数。它接受......
  • Python学习笔记--循环的知识以及应用
    while循环代码:结果:案例:求1-100的和实现:案例:while循环猜数字实现:while循环的嵌套使用案例:打印九九乘法表(注意:要是想要输出不换行,代码可以这样写:print("hello......
  • Python__05--变量、常量与注释
    1变量1.1基本信息定义:变量是用于在内存中存储数据的命名位置。把变量看作是一个容器是很有帮助的,它保存着可以在程序中稍后更改的数据。基本要求:变量名必须是一个......
  • python: qrcode
    python.exe-mpipinstall--upgradepippipinstallsegnopipinstallqrcodepipinstallqrcode-artisticpipinstallurlopenpipinstallImagepipinstallImageDra......
  • 人工智能学习书单推荐( Python版本)
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • python多线程修改共享全局变量不安全
    当需要对全局变量进行更改时,则会出现不安全的情况 #-*-coding:utf-8-*-"""================================================================================......
  • Python学习笔记--判断语句的延续
    ifelse语句示例:需要注意的是,if后面必须有条件,而else后面可以不需要判断条件案例:实现:ifelifelse语句多条件判断,if和elif后面必须有条件,else后面可以没有......