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 = 25
print(f"{name} is {age} years old.")
# 输出: Alice is 25 years old.
特点
简洁性:f-string 直接在字符串内插入变量,不需要额外的格式化函数调用。
表达式支持:可以在花括号 {}内使用任意的 Python 表达式。
类型转换:可以通过在花括号 `{}` 后添加 !s(字符串)、!r(原始值)或 !a(ASCII)来进行类型转换。
格式化选项:可以在花括号{}内使用冒号':' 和格式化字符串,与 str.format() 类似。
基本使用
name = "Bob"
age = 30
print(f"{name} is {age} years old.")
# 输出: Bob is 30 years old.
使用表达式
x = 10
y = 20
print(f"The sum of {x} and {y} is {x + y}.")
# 输出: The sum of 10 and 20 is 30.
类型转换
pi = 3.14159
print(f"Pi: {pi!r}")
# 输出: Pi: 3.14159
格式化选项
price = 199.9999
print(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 28
class 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 来格式化字符串。