Python 方便快捷的 f-string 方法

Python 方便快捷的 f-string 方法


前言

f-string 方法 为字符串格式化方法之一,欲要了解更多请移步总集篇 Python 字符串格式化最强详解2.0 『如何输出好看的内容』


最方便快捷的 f-string 方法😍

f-string 只是一个简称,中文释义 f-字符串 ,Python 官方对其的命名为 格式化字符串字面值,这是一个较新的 字符串格式化 方法,伴随着 Python3.6 的发布而诞生,也是到目前而言,最方便快捷的 字符串格式化 方法,我最常用的就是这种方法

(一)、f-string 方法的基本使用

这个简称来由的原因也很有趣,先来看一段 f-string 字符串格式化的简单使用语法

name1 = "张三"
name2 = "罗翔"
print(f"{name1}他是一个{'法外狂徒'},今天他遇到了{name2},从此改过自新")
  1. 首先看看结构,因为在字符串前面带有一个 fF 的前缀,所以又将其 称为 f-string 字符串格式化 方法,是不是很直接呢
  2. {} 字符之间写 可以引用的变量,字段,表达式等,在上面的代码中,使用了两种方法,一是引用变量,二是直接在花括号里写入 内容
  3. 在花括号中写入字符串内容,需要注意字符串引号不能与外层字符串引号一致,如果外层为双引号,那花括号内字符串应为单引号

传入各种类型

上面只是简简单单的传入了 字符串类型的数据,那再尝试入其他类型

p1 = 6                              # 整数类型
p2 = 2.3333                         # 浮点数类型
p3 = 2e+2                           # 科学计数法
p4 = 2**3                           # 运算符
p5 = True if 1 == 1 else False      # 三元表达式
p6 = list(range(5))                 # 列表
p7 = [i*10 for i in range(1, 5)]    # 列表生成式
print(f"{p1}|{p2}|{p3}|{p4}|{p5}|{p6}|{p7}")
print("{}|{}|{}|{}|{}|{}|{}".format(p1, p2, p3, p4, p5, p6, p7))
6|2.3333|200.0|8|True|[0, 1, 2, 3, 4]|[10, 20, 30, 40]
6|2.3333|200.0|8|True|[0, 1, 2, 3, 4]|[10, 20, 30, 40]

其实看到这,应该就能明白为啥说 f-string 是最方便快捷的 字符串格式化方法

  • f-string 和 .format() 字符串格式化 方法一样也能摆脱 占位符数据类型判断 的烦恼,且从使用语法上看,无非是一个写在花括号里,一个写在花括号外,两则使用起来大同小异。
  • 从结构长度和可阅读性上来说,f-string 方法明显更胜一筹,能很清楚的知道哪个花括号对应了什么样的值,直接明了

(二)、f-string 方法的功能

f-string 方法更像是 .format() 方法的升级版

  • 一是体现在都是使用到了花括号,二是其功能继承了 .format() 方法,同时其功能也更完善
  • f-string 方法的功能,我认为 以书写格式中的冒号为划分成两部分:冒号前和冒号后👇

1) 冒号前

Ⅰ. f-string的转换符

这里说的转换符和 上面两个方法中的转换符不太一样,f-string 方法的转换符是调用 内置函数对 求值结果先转换再格式化,转换符配合感叹号使用

转换符调用函数函数作用
!sstr()将对象转化成字符串
!rrepr()将对象转化成可打印表示形式的字符串(解释器读取的形式)
!aascill()ASCII编码字符直接返回内容,非ASCII编码字符会使用 \x、\u 和 \U 来转义

这里简单说一下 str()repr() 的差别,str是将对象或则说一个内容转化成字符串,在打印出来的时候是不带有引号的,如果是一个字符串对象时,str() 会自动识别,不做任何更改。repr() 的差别就在这,使用这个函数,会对字符串再字符串化一次,也就是变成嵌套字符串,在打印时是带引号的

print(f"转换符!s: {'张三'!s} ")
print(f"转换符!s: {56!s} ")
print(f"str(): {str('张三')} ")
print(f"转换符!r: {'张三'!r} ")
print(f"转换符!r: {56!r} ")
print(f"repr(): {repr('张三')} ")
print(f"转换符!a: {'张三'!a} ")
print(f"转换符!a: {56!a} ")
print(f"ascii(): {ascii('张三')} ")
转换符!s: 张三 
转换符!s: 56 
str(): 张三 
转换符!r: '张三' 
转换符!r: 56 
repr(): '张三' 
转换符!a: '\u5f20\u4e09' 
转换符!a: 56 
ascii(): '\u5f20\u4e09' 

Ⅱ. 变量名显示

在 f-string 功能中有个等号,如果使用此功能,输出将包含表达式文本,此功能是 3.8 版本功能,注意匹配Python版本使用

name = "张三"
job = "法外狂徒"
print(f"{name=}")
print(f"{name = !r}")
print(f"{name + '是' + job= }")
name='张三'
name = '张三'
name + '是' + job= '张三是法外狂徒'
  • 使用 = 号 功能时,表达式中的空格也会一并输出

2) 冒号后

Ⅰ. 对数字类型处理

指定小数精度和带符号处理

x = 2.33333
print(f"{x:.2f}")
print(f"{x:+.2f}")
print(f"{x:+}")
print(f"{2.333:+.2f}")
2.33
+2.33
+2.33333
+2.33

Ⅱ. 对齐与填补

x = "张三"
print(f"左对齐: {x:<10}")
print(f"右对齐: {x:>10}")
print(f"居中对齐: {x:^10}")

如果不指定填充字符,那么输出的结果是将默认以空格为填充,如果指定填充类型的话,书写格式如下👇🏻

x = "张三"
print(f"左对齐: {x:-<10}")
print(f"右对齐: {x:->10}")
print(f"居中对齐: {x:-^10}")

是不是感觉冒号后的写法很眼熟呀,没错!大致就是 .format() 的写法这也是前面提到的 f-string 方法更像是 .format() 方法的升级版的原因,可以去尝试一下 .format() 其他的一些功能写法写在冒号后面


(三)、书写格式和优先顺序👺

f-string 方法书写格式如下: 👇

英文原文

"{f_expression[=][! conversion][: format_spec]}"

中文释义

{f表达式[=][! 转换][: 格式规格]}

  1. f表达式 f_expression 看起来高大上,其实就是指 变量,字段,表达式
  2. =: 输出将包含表达式文本,’=’ 以及求值结果,参考 Ⅱ. 变量名显示
  3. ! 转换 ! conversion 参考 Ⅰ. f-string的转换符
  4. : 格式规格 : format_spec: 就是使用.format 的功能,详情参考 (二)、.format 方法的功能
    但对于特殊的对象,比如 datetime,还能这么去做
    now = datetime.datetime.now()
    print(f"{now:%Y-%m-%d}")
    print("{:%Y-%m-%d}".format(now))
    
    2021-04-14
    2021-04-14
    

    .format 同样适用


相关博客😏

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值