Python中的f-string和format()

学术   2024-08-17 09:10   广东  

format方法

    Python 的 format方法是一种格式化字符串的方法,它允许你在字符串中插入占位符,然后使用具体的值替换这些占位符。format 方法是在 Python 2.6 中引入的,并在 Python 3.x 中得到了广泛的应用。

基本用法

format方法的基本语法如下:

"{} {}".format(arg1, arg2)

这里 {}是占位符,`arg1` 和 `arg2` 是用来替换占位符的实际值。

示例

print("Hello, {}!".format("World"))# 输出: Hello, World!

高级用法

· 指定位置:

  print("{} {}".format("Hello", "World"))  # 输出: Hello World  print("{1} {0}".format("Hello", "World"))  # 输出: World Hello

· 关键字参数:

  print("{name} is {age} years old.".format(name="Alice", age=25))  # 输出: Alice is 25 years old.

· 格式化数字:

  print("Pi is approximately {:.2f}".format(3.14159))  # 输出: Pi is approximately 3.14

· 填充和对齐:

print("|{:<10}|{:>10}|{:^10}|".format('Left', 'Right', 'Center'))  # 输出: |Left      |       Right|     Center|

· 使用索引访问列表中的元素:

  items = ['apple', 'banana', 'cherry']  print("I like {0[1]} and {0[2]}.".format(items))  # 输出: I like banana and cherry.

格式化符号说明

  • `:` 之后可以添加格式化选项。

  • `<`, `>` 和 `^` 分别表示左对齐、右对齐和居中对齐。

  • `0` 表示用零填充。

  • 数字表示宽度。

  • `.n` 表示精度(对于浮点数)。

更多高级功能

· 自动编号:

  如果你不想显式地指定位置,可以省略括号中的数字,Python 会自动按顺序编号。

  print("{}, {}, {}".format('a', 'b', 'c'))  # a, b, c

· 转义大括号:

  如果你想要在字符串中直接输出 `{` 或者 `}`,需要使用 `\{` 和 `\}` 进行转义。

  print("{{ and }}")  # 输出: { and }

· 格式化日期和时间:

  通常需要使用 `datetime` 模块配合 `format` 方法来格式化日期和时间。

  from datetime import datetime  now = datetime.now()  print(now.strftime("%Y-%m-%d %H:%M:%S"))  # 输出类似于: 2024-08-16 23:25:00

    format方法是一个非常强大的工具,可以帮助你以灵活的方式格式化字符串。不过需要注意的是,在 Python 3.6 以上版本中,f-string(格式化字符串文字)的出现提供了更为简洁和直观的方式来格式化字符串,因此在新的项目中推荐使用 f-string。

f-string

    f-string(格式化字符串文字)是 Python 3.6(PEP 498)及更高版本中引入的一种新的字符串格式化方法。它提供了一种更简洁、更直观的方式来构建格式化的字符串。f-string 允许你在字符串字面量前加上 `f` 或 `F` 前缀,并在字符串内部使用花括号 {} 包裹变量或表达式,这些变量或表达式的值将被计算并插入到字符串中。

基本用法

name = "Alice"age = 25print(f"{name} is {age} years old.")# 输出: Alice is 25 years old.

特点

  • 简洁性:f-string 直接在字符串内插入变量,不需要额外的格式化函数调用。

  • 表达式支持可以在花括号 {}内使用任意的 Python 表达式。

  • 类型转换:可以通过在花括号 `{}` 后添加 !s(字符串)、!r(原始值)或 !a(ASCII)来进行类型转换。

  • 格式化选项:可以在花括号{}内使用冒号':' 和格式化字符串,与 str.format() 类似。

基本使用

name = "Bob"age = 30print(f"{name} is {age} years old.")# 输出: Bob is 30 years old.


使用表达式

x = 10y = 20print(f"The sum of {x} and {y} is {x + y}.")# 输出: The sum of 10 and 20 is 30.

 类型转换

pi = 3.14159print(f"Pi: {pi!r}")# 输出: Pi: 3.14159

格式化选项

price = 199.9999print(f"The price is ${price:.2f}.")# 输出: The price is $199.99.

字典和对象属性

person = {"name": "Charlie", "age": 28}print(f"{person['name']} is {person['age']}")# 输出: Charlie is 28class Person:    def __init__(self, name, age):        self.name = name        self.age = age
p = Person("Diana", 32)print(f"{p.name} is {p.age} years old.")# 输出: Diana is 32 years old.

与 str.format()的比较

    f-string 通常比 str.format() 更加简洁和直观。然而,在某些情况下,你可能仍然会选择使用 str.format(),比如当你需要处理复杂的格式化需求或者兼容早期版本的 Python 时。

    f-string 是一种非常方便和现代的字符串格式化方法,特别适合于编写简洁的代码。由于它是在 Python 3.6 中引入的,如果你正在使用这个版本或更高版本的 Python,强烈建议使用 f-string 来格式化字符串。

控制工程研习
好好学习,天天向上
 最新文章