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
)。