Python Sprintf:Python中的格式化字符串

没有确切的sprintf 内置函数来打印格式化的字符串,但由于 Python 的存在,有许多方法可以打印格式化的字符串。

在这篇文章中,我们将介绍Python中四个类似于sprintf 的功能,包括% 操作符、format()f-string ,以及一个用户定义的sprintf 函数,让我们深入了解一下。

Python中的格式化字符串

字符串格式化也被称为字符串插值,我们可以在预定义的文本中插入一个自定义值、字符串或变量。

它是打印字符串的首选和可读的方法之一,包括一些值或结果,它在Python中给我们提供了类似sprintf 的功能。

我们还可以在格式化的字符串中使用数学表达式。例如,假设我们有两个值,想把它们相加,打印出一个最终结果。

代码示例:

x = 3
y = 4
print(f"The sum of {x} and {y} = {x+y}")    # formatted string
print("The sum of",x,"and",y, "=", (x+y))   # normal string

输出:

The sum of 3 and 4 = 7
The sum of 3 and 4 = 7

我们可以看到,上面的结果是一样的,但是普通的字符串非常垃圾;然而,格式化的字符串更具有可读性,开发者很容易使用格式化的字符串编写代码。

Python中格式化字符串的不同方法

Pythons是一种通用的编程语言,拥有多样化的开源社区和持续的支持,它为开发者提供了解决方案和功能,可以根据工作的性质和特定的场景以众多方式实现任何任务。

与使用格式化字符串类似,我们有不同的方法可以用来打印格式化字符串,我们将在本文中逐一讨论。

使用% 操作符的格式化字符串

这是Python和其他编程语言中格式化字符串的古老技术之一。在Python中,字符串有一个内置的操作,可以使用% 运算符访问,允许我们轻松地进行字符串格式化,类似于C和C++中的springf

代码示例:

name = "Zeeshan Afridi"
msg = "Hey! developers, it's %s." %name
print(msg)

输出:

Hey! developers, it's Zeeshan Afridi.

在上面的代码中,%s 警告编译器,我希望在结尾处有一个字符串,正如所演示的那样,我们用% 操作符将字符串指定为%name

在字符串格式化中,对于不同的数据类型有不同的格式指定器。

格式指定器 数据类型 输出
%c 字符 它显示一个Unicode字符
%d 整数 整数
%f 浮动点 十进制数字
%o 八进制整数 八进制数
%s 字符串 它给出了一个字符串
%t 日期和时间 数据和时间

在Python中使用format() 函数的格式化字符串

format() 是Python中格式化字符串的一种新方法,它是在Python 3中引入的。

它是一种新的格式化字符串的样式,我们不需要记住格式指定符和它们在字符串中的顺序;相反,我们可以在字符串的末尾使用format() ,在指定的位置提供参数。

代码示例:

program = "BSSE"
cgpa = 3.2
student = 'Hi! I am a student of {}, and my CGPA is {}'.format(program, cgpa)
print(student)

输出:

Hi! I am a student of BSSE, and my CGPA is 3.2

在上面的程序中,我们用大括号{} ,指定了要插入数值的位置,在字符串student 的末尾,我们使用了.format() 函数,并相应地给它两个参数。

Python中的格式化字符串字头f-string

格式化字符串字面也被称为f-string ,它作为一种新的字符串格式化方法被包含在Python 3.6中,其语法更加可读和直接。

f-string 具有其他方法所遗漏的优秀而独特的功能,我们可以在字符串内部定义表达式和值。

没有任何必要在字符串的末尾使用.format() 。让我们看看下面Python中f-String 的一个例子。

代码示例:

my_fav_lang = "Python"
experience = 2
zeeshan = f'I love to code in {my_fav_lang}, and I have {experience} year experience in Python programming.'
print(zeeshan)

输出:

I love to code in Python, and I have 2 years of experience in Python programming.

哇!f-string ,超级简单,可读性强。与其他两种方法不同,我们不需要使用任何其他方法或逗号,只需要使用f 作为字符串的前缀,就可以了。

如何在Python中使用sprintf

sprintf 代表字符串打印;基本上,它是C和C++编程语言中的一个内置函数,用于打印出一个格式化的字符串,它将输出存储在 中指定的 缓冲区。而在Python中也有不同但类似的方式。sprintf() char

sprintf 在Python中不是一个用户定义的函数,但是我们可以使用StringIO 实例作为缓冲器。而且与sprintf 不同,我们必须向buf.write 和格式化方法传递一个字符串。在这种情况下,% 是用来进行字符串格式化的。

代码示例:

import io
from io import StringIO
def sprintf(buf, fmt, *args):
    buf.write(fmt %args)
age = 24
fav_color = "Blue"
buf = io.StringIO()
sprintf(buf, "I'm %d years old, and my favourite colour is %s!", age, fav_color)
print(buf.getvalue())

输出:

I'm 24 years old, and my favourite colour is Blue!

如果你得到这个程序的任何ImportError ,请从你的命令行界面安装所需的依赖项(CLI)。