python 3中的字符串格式“%g%%”是啥意思? [复制]
Posted
技术标签:
【中文标题】python 3中的字符串格式“%g%%”是啥意思? [复制]【英文标题】:What is the string format "%g%%" mean in python 3? [duplicate]python 3中的字符串格式“%g%%”是什么意思? [复制] 【发布时间】:2019-03-03 09:12:02 【问题描述】:根据python 3文档,格式化“%%”的字符串表示“一个百分号”。
以下代码为示例:
"%g%%" % 10.34 == "10.34%"
我不确定这里的“%g”是什么意思,我怀疑应该是同一个意思 作为字符串格式中的“%g”,即“%f 或 %e 中较短的一个”。 “%f”或“%e”表示 “浮点实数”或“指数记数法,小写'e'”。 例如:
"%f" % 10.34 == '10.34000'
或
"%e" % 1000 == '1.000000e+03'
基于这种理解,我尝试了以下代码。我会先格式化 x, 然后直接使用格式化字符串“%%”,但是不行。
x = '%g' % 10.34
print(isinstance(x, float)) #this returns false
"%%" % x == "10.34%" # this returns error
然后我尝试了这个:
x = float(10.34)
print(isinstance(x, float)) #this returns true
"%%" % x == "10.34%" # this returns error as well
我什至试过这个:
x = "10.34000"
"%%" % x == "10.34%" # this returns error as well
任何人都知道“%%”是怎么回事。这是什么意思,在任何情况下我们都必须使用“%g%%”和“%%”吗?
这已经解决了,问题来自于书的误导。我在这里做了cmets:
【问题讨论】:
如果%
是一个元字符,你将如何在格式化结果的输出 中包含一个实际的%
?答案是%%
。 %%
序列不格式化任何其他值,它在输出中格式化 %
。
是的。你说的对。我现在明白了。 “%%”不是一种格式,而是一种输出符号“%”的方式。因此我们在使用“%%”时必须包含一个格式,这个格式可以是“%d”、“%f”或“%s”等。
如果使用%
运算符将该字符串用作printf样式格式的模板,则模板字符串中的%
字符具有特殊含义。您可以使用%%
而不使用其他元字符:"This works: %%" % ()
,但这有点没有意义,对吧?
是的。你是对的。
【参考方案1】:
既然%
引入了一种格式,那么肯定有某种方法可以指定文字%
;那就是%%
。
>>> print("%s%%" % "foo")
foo%
这类似于\\
如何在字符串中指定文字反斜杠。
【讨论】:
以上是关于python 3中的字符串格式“%g%%”是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Python中print(":^4".format(i),end=' ')是啥意思啊?