python——格式化输出

pumpkin84514 2024-10-07 10:35:01 阅读 91

Python 提供了多种格式化输出的方法,常见的有以下几种:

百分号(%)格式化<code>str.format() 方法f-string(格式化字符串字面量)模板字符串

每种方法都有其独特的用法和适用场景。下面我们逐一详细讲解并举例说明。

1. 百分号(%)格式化

这种方法类似于 C 语言中的 printf 格式,使用百分号(%)作为占位符。

用法

%s:字符串%d:整数%f:浮点数%%:百分号

示例

name = "Alice"

age = 30

height = 1.75

# 字符串格式化

print("My name is %s." % name)

# 输出: My name is Alice.

# 整数格式化

print("I am %d years old." % age)

# 输出: I am 30 years old.

# 浮点数格式化

print("My height is %.2f meters." % height)

# 输出: My height is 1.75 meters.

# 百分号

percentage = 99

print("Success rate: %d%%" % percentage)

# 输出: Success rate: 99%

2. str.format() 方法

str.format() 方法使用大括号 {} 作为占位符,可以通过位置和名称进行格式化。

用法

{}:位置占位符{0}:位置参数{name}:关键字参数:.2f:保留两位小数

示例

name = "Alice"

age = 30

height = 1.75

# 位置占位符

print("My name is {}.".format(name))

# 输出: My name is Alice.

# 位置参数

print("I am {0} years old. My name is {0}.".format(name))

# 输出: I am Alice years old. My name is Alice.

# 关键字参数

print("My name is {name}. I am {age} years old.".format(name=name, age=age))

# 输出: My name is Alice. I am 30 years old.

# 浮点数格式化

print("My height is {:.2f} meters.".format(height))

# 输出: My height is 1.75 meters.

3. f-string(格式化字符串字面量)

f-string(格式化字符串字面量)是 Python 3.6 引入的一种格式化字符串的方法。f-string 使用 fF 前缀,并在大括号 {} 中直接放入变量、表达式、函数调用等,可以动态生成字符串。f-string 提供了一种简洁、直观的方式来处理字符串格式化。

基本用法

name = "Alice"

age = 30

print(f"My name is { -- -->name} and I am { age} years old.")

# 输出: My name is Alice and I am 30 years old.

数字计算

f-string 可以直接在大括号内进行数字计算。

a = 5

b = 3

print(f"The sum of { a} and { b} is { a + b}.")

# 输出: The sum of 5 and 3 is 8.

print(f"{ a} times { b} is { a * b}.")

# 输出: 5 times 3 is 15.

字符串连接

f-string 支持直接在大括号内进行字符串连接。

first_name = "Alice"

last_name = "Smith"

print(f"My full name is { first_name + ' ' + last_name}.")

# 输出: My full name is Alice Smith.

函数执行

可以在 f-string 中调用函数,并将结果嵌入到字符串中。

def greet(name):

return f"Hello, { name}!"

name = "Alice"

print(f"Greeting: { greet(name)}")

# 输出: Greeting: Hello, Alice!

格式化选项

f-string 支持各种格式化选项,例如数字的格式化(小数点、宽度等)。

保留小数点

value = 123.45678

print(f"The value is { value:.2f}.")

# 输出: The value is 123.46.

数字填充和对齐

num = 42

print(f"Number: { num:04d}")

# 输出: Number: 0042

value = 3.14159

print(f"Pi: { value:<10.2f}")

# 输出: Pi: 3.14

嵌套表达式

f-string 可以嵌套更复杂的表达式。

names = ["Alice", "Bob", "Charlie"]

print(f"First name: { names[0]}")

# 输出: First name: Alice

print(f"Upper case name: { names[1].upper()}")

# 输出: Upper case name: BOB

多行 f-string

可以使用三引号定义多行 f-string,使其更具可读性。

name = "Alice"

age = 30

height = 1.75

info = (

f"Name: { name}\n"

f"Age: { age}\n"

f"Height: { height:.2f} meters"

)

print(info)

# 输出:

# Name: Alice

# Age: 30

# Height: 1.75 meters

示例总结

以下是 f-string 详细示例,展示了数字计算、字符串连接和函数执行等任务。

name = "Alice"

age = 30

height = 1.75

# 基本用法

print(f"My name is { name} and I am { age} years old.")

# 输出: My name is Alice and I am 30 years old.

# 数字计算

a = 5

b = 3

print(f"The sum of { a} and { b} is { a + b}.")

# 输出: The sum of 5 and 3 is 8.

print(f"{ a} times { b} is { a * b}.")

# 输出: 5 times 3 is 15.

# 字符串连接

first_name = "Alice"

last_name = "Smith"

print(f"My full name is { first_name + ' ' + last_name}.")

# 输出: My full name is Alice Smith.

# 函数执行

def greet(name):

return f"Hello, { name}!"

print(f"Greeting: { greet(name)}")

# 输出: Greeting: Hello, Alice!

# 格式化选项

value = 123.45678

print(f"The value is { value:.2f}.")

# 输出: The value is 123.46.

num = 42

print(f"Number: { num:04d}")

# 输出: Number: 0042

value = 3.14159

print(f"Pi: { value:<10.2f}")

# 输出: Pi: 3.14

# 嵌套表达式

names = ["Alice", "Bob", "Charlie"]

print(f"First name: { names[0]}")

# 输出: First name: Alice

print(f"Upper case name: { names[1].upper()}")

# 输出: Upper case name: BOB

# 多行 f-string

info = (

f"Name: { name}\n"

f"Age: { age}\n"

f"Height: { height:.2f} meters"

)

print(info)

# 输出:

# Name: Alice

# Age: 30

# Height: 1.75 meters

4. 模板字符串

模板字符串是通过 string 模块中的 Template 类实现的,使用 $ 作为占位符。

用法

$name:变量占位符$:转义符

示例

from string import Template

name = "Alice"

age = 30

height = 1.75

template = Template("My name is $name.")

print(template.substitute(name=name))

# 输出: My name is Alice.

template = Template("I am $age years old.")

print(template.substitute(age=age))

# 输出: I am 30 years old.

template = Template("My height is $height meters.")

print(template.substitute(height=height))

# 输出: My height is 1.75 meters.

各种格式化方法对比与选择

百分号(%)格式化

优点:简单直观,适合简单的格式化需求。缺点:功能有限,语法较老旧。适用场景:老代码、需要兼容性高的项目。

str.format() 方法

优点:功能强大,支持位置参数和关键字参数。缺点:语法相对繁琐。适用场景:需要复杂格式化的情况。

f-string

优点:最现代、最简洁,支持嵌入变量、表达式和函数调用。缺点:只适用于 Python 3.6 及以上版本。适用场景:Python 3.6 及以上版本,任何需要格式化字符串的情况。

模板字符串

优点:简单易用,适合与非程序员协作。缺点:功能相对简单,不支持复杂表达式。适用场景:配置文件、模板文件等。

示例总结

# 百分号格式化

print("Hello, %s! You have %d new messages." % ("Alice", 5))

# str.format() 方法

print("Hello, {}! You have {} new messages.".format("Alice", 5))

# f-string

name = "Alice"

messages = 5

print(f"Hello, { name}! You have { messages} new messages.")

# 模板字符串

from string import Template

template = Template("Hello, $name! You have $messages new messages.")

print(template.substitute(name="Alice", messages=5))code>

根据具体需求和项目环境选择合适的格式化方法,以确保代码的可读性和维护性。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。