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里的.format()是啥意思

printf中的%*d是啥意思?

Python中print(":^4".format(i),end=' ')是啥意思啊?

格式化字符串是啥意思?

Python 中的lambda 是啥意思,有啥作用,如何使用?

%[^\n] 在 scanf() 格式字符串中是啥意思