Python中%r和%s的详解及区别

Python中 %r 和 %s 的详解及区别

在 Python 中,可以使用 % 操作符来格式化字符串。其中 %s%r 打印出来的字符串基本相同,但有时候它们输出的内容可能会有不同。本文将详细讲解 %s%r 在 Python 中的使用。

什么是字符串格式化?

字符串格式化是指将一个字符串模板中的占位符替换为真正的数据。在 Python 中,以下方式可以实现字符串格式化:

# 使用 % 进行字符串格式化
string = "Hello, %s!" % "World"
print(string)
# 输出:Hello, World!

# 使用 {} 和 format() 进行字符串格式化
string = "Hello, {}!".format("World")
print(string)
# 输出:Hello, World!

在这两个例子中,%s{} 都是占位符,分别表示插入一个字符串。因此,这些占位符可以被实际的字符串取代。

%s

%s 指示 Python 将变量视为一个字符串,并将其插入到格式化的字符串中。变量可以是字符串、数字等任何数据类型,只要将其作为一个参数传递给字符串的格式化语句即可。

# 使用 %s 打印数字和字符串
my_name = "Mike"
age = 26
print("My name is %s. I am %s years old." % (my_name, age))
# 输出:My name is Mike. I am 26 years old.

# 使用 %s 打印一个列表
my_list = ['a', 'b', 'c']
print("The list is: %s" % my_list)
# 输出:The list is: ['a', 'b', 'c']

如上所述,%s 可以格式化任何数据类型(如字符串、数字、列表等)。

%r

%r 可以将变量转换为其“原始”形式,包括引号、斜杠和其他特殊字符。因此,在某些情况下,使用 %r 可能会更有用。

# 使用 %r 打印数字和字符串
my_name = "Mike"
age = 26
print("My name is %r. I am %r years old." % (my_name, age))
# 输出:My name is 'Mike'. I am 26 years old.

# 使用 %r 打印一个列表
my_list = ['a', 'b', 'c']
print("The list is: %r" % my_list)
# 输出:The list is: ['a', 'b', 'c']

可以看到,%r 打印的字符串包含了引号,这是 str() 无法做到的。 %r%s 更加严谨,更加适用于调试和日志记录等。

区别

当我们使用 % 进行字符串插值时,使用 %s 通常足以满足我们的需求。但是,如果我们需要表示不仅仅是内容本身,而是要用来表示这个对象的字符串形式,在这种情况下,使用 %r 会更好。

另一个区别是 %s 将所有东西都转换为字符串,而 %r 将字符串保留为字符串。 在大多数情况下,这不会导致问题,但是在某些情况下,保存为字符串的值可能更直观一些。

总结

在 Python 中,%s%r 格式化字符串格式基本相同,不同之处在于 %r 可以在某些情况下更好地提供原始信息。用法上也非常相似,%s 将变量格式化为字符串,%r 将变量格式化为其字符串表示形式之一。

另外,了解如何格式化字符串对于 Python 项目和编写好的代码非常重要。这使得代码更易于维护和调试,并改善在大型代码库中合作的能力。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中%r和%s的详解及区别 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • python实现字母闪烁效果的示例代码

    让我们来详细讲解如何实现Python中的字母闪烁效果。 简介 字母闪烁效果是一种常见的动态效果,通常是在应用程序中用来吸引用户眼球的一种特效。在Python中,我们可以使用一些库来实现这种效果,比如Tkinter、Pygame等。接下来,我们将以Tkinter库为例来演示如何实现字母闪烁效果。 步骤 步骤一:导入相关库 首先,我们需要导入Tkinter库来实…

    python 2023年5月31日
    00
  • 在 Emacs 中配置新模式:安装 python-mode.el

    【问题标题】:Configuring new modes in Emacs: installing python-mode.el在 Emacs 中配置新模式:安装 python-mode.el 【发布时间】:2023-04-03 09:58:01 【问题描述】: 我正在尝试使用 python-mode.el 配置 emacs。我做了很多研究,虽然我还是新手,…

    Python开发 2023年4月8日
    00
  • Python OpenCV识别行人入口进出人数统计

    Python OpenCV识别行人入口进出人数统计是一个相对复杂的项目,主要包括以下几个步骤: 1.采集视频数据 首先需要采集视频数据,以提供识别和统计的基础。可以使用电子商务平台上的摄像头,也可以在现实中安装专用监控设备。此处可以使用OpenCV自带的视频捕获功能来读取本地视频文件或者IP摄像头的视频流。 2.使用Haar特征级联检测器进行对象检测 在视频…

    python 2023年6月6日
    00
  • python中编写函数并调用的知识点总结

    当我们在Python中编写一些复杂的程序时,我们需要对代码进行模块化和重用,函数是实现这一目的的好方法。在本文中,我们将讲解如何编写Python函数并调用它们的知识点。 函数的定义 一个函数就是一个可以执行特定任务的有用代码块。在Python中,我们可以使用“def”关键字来定义函数,其基本语法如下: def function_name(arguments)…

    python 2023年6月5日
    00
  • Python内置数据类型详解

    下面是详细的Python内置数据类型攻略: Python内置数据类型详解 Python是一种动态的、面向对象的高级编程语言,具有简洁、易读性强等特点。在Python中,内置了许多数据类型,包括数字类型、字符串类型、列表类型、元组类型、集合类型、字典类型等。在这里,我们将对这些数据类型进行详细的讲解。 数字类型 Python中的数字类型包括整数类型和浮点数类型…

    python 2023年6月5日
    00
  • Python实现冒泡排序算法的示例解析

    冒泡排序是一种简单的排序算法,它的基本思想是通过不断交换相邻的元素,将较大的元素逐渐“冒泡”到数组的末尾。在Python中,我们可以使用两层循环来实现冒泡排序。 下面是一个示例,演示如何使用Python实现冒泡排序算法: def bubble_sort(arr): n = len(arr) # 外层循环控制排序的轮数 for i in range(n): #…

    python 2023年5月14日
    00
  • windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)

    下面是Windows下安装Python的C扩展编译环境的完整攻略: 一、安装Microsoft Visual C++编译工具 1.首先,我们需要安装Microsoft Visual C++编译工具,可以在Microsoft官网上下载并安装。下载地址:https://visualstudio.microsoft.com/vs/features/cplusplu…

    python 2023年5月13日
    00
  • Python变量和字符串详解

    下面是关于“Python变量和字符串详解”的完整攻略。 Python变量和字符串详解 变量 在 Python 中,变量是用来存储数据的容器。在 Python 中,定义一个变量非常简单,只需要先给变量名赋值,然后再给变量赋值即可,如下所示: x = 5 y = "Hello, World!" 变量名应该以字母或下划线开头,并且变量名是区分大…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部