Answers:
它们用于格式化字符串。%s
充当字符串的占位符,而%d
充当数字的占位符。它们的关联值使用%
运算符通过元组传递。
name = 'marcog'
number = 42
print '%s %d' % (name, number)
将打印marcog 42
。请注意,名称是字符串(%s),数字是整数(%d为十进制)。
有关详细信息,请参见https://docs.python.org/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))
输出将是
贾科莫4.3 4 4.300000 4.3
如您所见,%d
将截断为整数,%s
保持格式,%f
将打印为float并%g
用于通用编号
明显
print('%d' % (name))
会产生异常;您不能将字符串转换为数字
%s
使用数字代替将会发生什么。
这些是占位符:
例如: 'Hi %s I have %d donuts' %('Alice', 42)
此行代码将%s替换为Alice(str),将%d替换为42。
输出: 'Hi Alice I have 42 donuts'
大多数情况下,这可以通过“ +”来实现。为了更深入地理解您的问题,您可能还需要检查{} / .format()。这是一个示例:Python字符串格式:%vs.format
在这里也可以看到@ 40'的Google python教程视频,其中有一些说明 https://www.youtube.com/watch?v=tKTZoB2Vjuk
这些都是有根据的答案,但没有一个完全可以理解%s
和之间的区别的核心%d
。
%s
告诉格式化程序str()
在参数上调用该函数,并且由于我们按照定义强制使用字符串,%s
因此实际上只是在执行str(arg)
。
%d
另一方面,在调用int()
之前先调用参数str()
,例如str(int(arg))
,这将导致int
强制以及str
强制。
例如,我可以将十六进制值转换为十进制,
>>> '%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'
%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表达式的值包含在字符串中且采用特定格式时,可以使用它们。
请参阅“ 深入Python ”以获取相对详细的介绍。
根据最新标准,这是应该执行的操作。
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
请检查python3.6文档和示例程序
如果您想避免使用%s或%d,那么..
name = 'marcog'
number = 42
print ('my name is',name,'and my age is:', number)
输出:
my name is marcog and my name is 42
%s
和的使用%d
。
print
是Python 3中的一个函数,不是语句。
%s用于保留字符串的空间%d用于保留数字的空间
name = "Moses";
age = 23
print("My name is %s am CEO at MoTech Computers " %name)
print("Current am %d years old" %age)
print("So Am %s and am %d years old" %(name,age))
该视频深入介绍了该技巧https://www.youtube.com/watch?v=4zN5YsuiqMA
%s
与搜索引擎配置一起使用。Chrome%s
用来替换在地址栏中输入的关键字。Python的使用%s
方式与此类似。在print('description: %s' % descrip)
该%s
运营商将被存储在文本字符串替换descrip
变量。