您现在的位置是:首页 > 技术教程 正文

python 中的 f 字符串及其常见用法

admin 阅读: 2024-03-22
后台-插件-广告管理-内容页头部广告(手机)

有个小伙伴看到之前写的Faker库相关文章中出现了f'{}' 这个东东,他问我是啥意思?

实际上,这个是使用到了 f-string 作为格式化的方法,为此简单罗列了一下 f-string 及其常见用法,给小伙伴们作为参考。

一、f-string是什么?

Python f-string 是执行字符串格式化的最新 Python 语法。自 Python 3.6 起可用。
Python f 字符串提供了一种更快,更易读,更简明且不易出错的在 Python 中格式化字符串的方式。f 字符串的前缀为f,并使用{}括号评估值。在冒号后指定用于类型,填充或对齐的格式说明符。例如:f'{price:.3f}',其中price是变量名, .3f 表明精度(保留三位小数)。

二、格式化常见用法

Python中常见的格式化方法有三种,分别是:

1. % 符号+格式指定符

2. format()函数

3. f-string

下面举个例子,结果都是“【张三】今年【18】岁”,但是使用了不同的格式化方法:

  1. name = "张三"
  2. age = 18
  3. # 最原始提供的字符串替换方法,使用了 % 运算符和经典字符串格式指定,如 %s %d 等
  4. print("【%s】今年【%d】岁" % (name, age)) # 【张三】今年【18】岁
  5. # Python 3.0 新增了 format() 函数,可以提供高级的格式化选项
  6. print("【{}】今年【{}】岁".format(name, age)) # 【张三】今年【18】岁
  7. # Python 3.6 f-string出现,使得格式化方法更加灵活,字符串前缀为 f,并使用 {} 评估值
  8. print(f"【{name}】今年【{age}】岁") # 【张三】今年【18】岁

三、f-string常见用法汇总

下面分别举例说明 f-string的一些常见用法

1. f-string 中接收表达式

  1. num = 12
  2. price = 6
  3. # f-string 中可以接收表达式
  4. print(f'【{num}】个苹果,每个【{price}】元,一共要花【{num * price}】元')
  5. # 【12】个苹果,每个【6】元,一共要花【72】元

2. f-string 可以对字典取值

  1. user = {"name": "Ace", "job": "teacher"}
  2. print(f'【{user["name"]}】的工作是【{user["job"]}】')
  3. # 【Ace】的工作是【teacher】

3. f-string 针对多行数据进行格式化

  1. name = "李四"
  2. age = 28
  3. job = "码农"
  4. msg = (
  5. f'Name: {name}\n'
  6. f'Age: {age}\n'
  7. f'Job: {job}'
  8. ) # 注意 msg 使用了 () 进行包裹
  9. print(msg)
  10. # Name: 李四
  11. # Age: 28
  12. # Job: 码农

4. f-string 中调用函数

  1. def my_max(x, y):
  2. """
  3. 三目运算比较两个数字大小
  4. :param x: int x
  5. :param y: int y
  6. :return: x 和 y 中较大的数字
  7. """
  8. return x if x > y else y
  9. a = 3
  10. b = 4
  11. print(f'【{a}】和【{b}】中较大的是【{my_max(a, b)}】')
  12. # 【3】和【4】中较大的是【4】

5. f-string 转义用法

  1. print(f"Python 使用 {{}} 来计算f-string中的变量")
  2. # Python 使用 {} 来计算f-string中的变量
  3. print(f'你真的很\'厉害\'') # 注意:单引号中想继续使用单引号,那就需要进行转义
  4. # 你真的很'厉害'

6. f-string 格式化浮点数

  1. val = 11
  2. # 通过 : 后跟 浮点数标识 ,可以实现格式化浮点数
  3. print(f'{val:.3f}') # 11.000
  4. print(f'{val:.4f}') # 11.0000

7. f-string 格式化宽度

  1. for i in range(1, 11):
  2. print(f'{i:02} {i * i:3} {i * i * i:4}')
  3. # 01 1 1
  4. # 02 4 8
  5. # 03 9 27
  6. # 04 16 64
  7. # 05 25 125
  8. # 06 36 216
  9. # 07 49 343
  10. # 08 64 512
  11. # 09 81 729
  12. # 10 100 1000

8. f-string 对齐字符串

  1. s1 = 'a'
  2. s2 = 'ab'
  3. s3 = 'abc'
  4. s4 = 'abcd'
  5. # 将输出的宽度设置为十个字符。 使用 > 符号,让输出结果右对齐。
  6. print(f'{s1:>10}')
  7. print(f'{s2:>10}')
  8. print(f'{s3:>10}')
  9. print(f'{s4:>10}')
  10. # a
  11. # ab
  12. # abc
  13. # abcd
  14. # 实际上,只要大于最大的字符串长度,就可以实现右对齐,感兴趣可以试下小于最大字符串长度会有什么表现

9. f-string 格式化时间

  1. import datetime
  2. now = datetime.datetime.now()
  3. print(f'{now:%Y-%m-%d %H:%M}')
  4. # 2023-04-02 21:07

10. f-string 接收对象 ,注意:对象必须定义了__str__()或__repr__()函数

  1. class User:
  2. def __init__(self, name, job):
  3. self.name = name
  4. self.job = job
  5. def __repr__(self):
  6. return f"{self.name} is a {self.job}"
  7. u = User('Ace', 'teacher')
  8. print(f'{u}')
  9. # Ace is a teacher

以上就是 f-string 常见的一些用法,使用f-string格式化数据可以更加灵活,满足多样化的需求,但注意,一定要Python3.6以上的版本才支持!

注意:Python3.6以上的版本才支持!

注意:Python3.6以上的版本才支持!

注意:Python3.6以上的版本才支持!

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索