我不明白 %s
和 %d
是做什么的,以及它们是如何工作的。
它们用于格式化字符串。 %s
作为一个字符串的占位符,而 %d
则作为一个数字的占位符。它们对应的值通过使用百分号运算符传递给一个元组。
name = 'marcog'
number = 42
print '%s %d' % (name, number)
将会打印出marcog 42
。请注意,name是一个字符串(%s),而number是一个整数(%d表示十进制)。
详见https://docs.python.org/zh-cn/3/library/stdtypes.html#printf-style-string-formatting。
在Python 3中,示例代码应该如下:
print('%s %d' % (name, number))
%d
用于十进制整数。
%s
用于通用字符串或对象,如果是对象,则会被转换为字符串。
考虑以下代码:
name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))
输出结果将为
giacomo 4.3 4 4.300000 4.3
正如你所看到的,%d
将截断为整数,%s
将保持格式,%f
将以浮点数形式打印,%g
用于通用数字。
显然。
print('%d' % (name))
将引发异常;您不能将字符串转换为数字
%s
被用作占位符,代表你想要插入格式化字符串中的字符串值。
%d
被用作占位符,代表数值或者十进制值。
举个例子(针对 Python 3)
print ('%s is %d years old' % ('Joe', 42))
将会输出什么
Joe is 42 years old
这些都是有用的回答,但都没有完全解释清楚%s
和%d
之间的区别。
%s
表示格式化操作将对参数调用str()
函数,因为根据定义,我们正在强制转换为字符串,所以%s
本质上只执行str(arg)
。
另一方面,%d
在调用str()
之前会对参数调用int()
,类似于str(int(arg))
,这将导致执行整数强制转换和字符串强制转换。
例如,我可以将一个十六进制值转换为十进制:
>>> '%d' % 0x15
'21'
或将浮点数截断。
>>> '%d' % 34.5
'34'
但是如果参数不是数字,该操作将引发异常。
>>> '%d' % 'thirteen'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
所以,如果意图只是调用str(arg)
,那么%s
就足够了,但如果您需要额外的格式(比如格式化浮点数小数位)或其他强制转换,则需要使用其他格式符号。f-string
标记时,当您省略格式化程序时,默认值为str
。>>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Unknown format code 'd' for object of type 'str'
对于string.format
也是如此;默认值为str
。
>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'
这些是占位符:
例如: '嗨%s,我有%d个甜甜圈' %('Alice', 42)
这行代码将用Alice (str)替换%s,用42替换%d。
输出结果: '嗨Alice,我有42个甜甜圈'
大多数情况下可以使用"+"来实现。为了更深入地理解您的问题,您可能想要查看{} / .format()。以下是一个示例:Python字符串格式化:%vs.format
还可以在谷歌的Python教程视频中查看40分钟的说明:https://www.youtube.com/watch?v=tKTZoB2Vjuk
%d
和%s
字符串格式化命令用于格式化字符串。其中%d
是数字,%s
是字符串。例如:print("%s" % "hi")
和
print("%d" % 34.6)
传递多个参数:
print("%s %s %s%d" % ("hi", "there", "user", 123456))
将返回hi there user123456
%d
不是任何数字。它是一个十进制数(也称为整数)。在上面的示例中,%d' %34.6
将仅输出 34
。对于 logger.info("value %d", 34.6)
同样适用。 - Snake Verde%d
和%s
是占位符,它们作为可替换的变量。例如,如果你创建了2个变量
variable_one = "Stackoverflow"
variable_two = 45
variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"
%s
适用于字符串,%d
适用于数字或十进制变量。variable_3
,它将如下所示。print(variable_3 % (variable_one, variable_two))
我在StackOverflow上搜索答案,找到了超过45个回答。
它们是格式说明符。当你想要将Python表达式的值与特定格式一起包含在字符串中时,就会使用它们。
请参阅《Dive into Python》进行相对详细的介绍。
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
请查看python3.6文档和示例程序,了解更多关于IT技术的内容。
my_word = 'epic'
my_number = 1
print('The %s number is %d.' % (my_word, my_number)) # traditional substitution with % operator
//这个史诗级数字是1。
print(f'The {my_word} number is {my_number}.') # newer format string style
//史诗级数字为1。
两者打印结果相同。
%s
进行搜索引擎配置。Chrome使用%s
来替换地址栏中输入的关键字。Python也以类似的方式使用%s
。在print('description: %s' % descrip)
中,%s
运算符将被存储在descrip
变量中的文本字符串所替换。圆括号可以防止Python 3中出现错误消息。 - noobninja