【问题标题】: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: %%" % (),但这有点没有意义,对吧?
  • 是的。你是对的。

标签: python string python-3.x python-2.7 format


【解决方案1】:

既然% 引入了一种格式,那么肯定有某种方法可以指定文字%;那就是%%

>>> print("%s%%" % "foo")
foo%

这类似于\\ 如何在字符串中指定文字反斜杠。

【讨论】:

    猜你喜欢
    • 2017-12-01
    • 2022-04-08
    • 2018-08-28
    • 2012-01-07
    • 2012-10-07
    • 2018-08-03
    • 2021-11-25
    • 2014-12-23
    • 2015-02-13
    相关资源
    最近更新 更多