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技术站