【问题标题】:Can someone please explain these Python string formatters有人可以解释一下这些 Python 字符串格式化程序吗
【发布时间】:2015-07-20 18:01:06
【问题描述】:

我对 Python 字符串格式化程序 %d 和 %i 之间的区别感到困惑。 Python 手册页将它们解释为相同的东西,'signed integer decimal' - 困惑!

From the Python 'Built in Types' page

【问题讨论】:

  • 您究竟为什么会感到困惑? Python 2.7 中有很多同义词(例如,strbytes,或结构格式前缀 !>),在英语中甚至更多。你觉得那些令人困惑吗?如果你问为什么有同义词,这是一个合理的问题,但如果你真的不知道如何编写代码或因为它们而阅读某人的代码,我认为你需要解释更多的困惑究竟是什么。

标签: python string python-2.7 string-formatting


【解决方案1】:

它们是完全相同的东西。

Python 继承了 C 的语法,您可以scanf() 函数中使用相同的格式将输入解析为变量。然后,您可以使用%i 接受带有0x 前缀的十六进制格式的整数、以0 开头的八进制表示法以及常规十进制(以10 为基数)整数,而%d 格式化程序严格只接受十进制整数输入。

但是,在使用 printf 函数输出时,您将使用 %x%o 将输出格式化为十六进制和八进制,始终明确地,并且 %d%i 只是同义词并输出十进制整数。 Python 继承了 printf 格式批发、别名和所有,尽管 scanf 区别没有等价物。

请参阅 printfscanf 联机帮助页。

较新的Format Specification Mini-language(用于str.format() methodformat() function)完全取消了i 格式化程序;只有d 保留在那里。

【讨论】:

  • 谢谢 - 这清除了它。我不知道这是 Python 文档页面上的错字还是它们确实是同一件事。
猜你喜欢
  • 2021-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多