-2

我想使用 % s 将两个参数传递给我的字符串。

我试过这个,但没有奏效:

title = "im %s with %s"
title % "programming" % "python"

它给出了这个错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not enough arguments for format string

你有想法吗?谢谢

4

3 回答 3

8

正确的语法是:

title = "im %s with %s"
title % ("programming", "python")

运算符有%两个操作数:

  1. 格式字符串在左侧;
  2. 包含所有参数的元组位于右侧(如果只有一个参数,它可以是一个标量)。
于 2012-05-19T17:59:23.190 回答
5

最好通过分解这些格式化指令的工作方式来理解这个问题。基本思想是%字符串中的每个都意味着需要随后将参数提供给字符串。

例如,这将起作用:

title = "i'm %s with %s" % ('programming', 'python')

和产量

"i'm programming with python"

's' in%s表示这是一个字符串的占位符。'd' 表示整数,'f' 表示浮点数等。您还可以指定其他参数。请参阅这些文档

如果您没有为每个占位符提供足够的项目,则会导致该not enough arguments for format string消息。

您的具体示例首先创建一个字符串常量,其中包含两个格式化指令。然后,当您使用它时,您必须为其提供两个项目。

换句话说,

title = "i'm %s with %s"
title % ('programming', 'python')

变成

"i'm %s with %s" % ('programming', 'python')
于 2012-05-19T17:59:19.977 回答
1

不是真正的答案,但是:

你也可以使用类似的东西:

title = "im %(doing)s with %(with)s"
title % {'doing': 'programming', 'with': 'python'}

或者:

title = "im %(doing)s with %(with)s" % {'doing': 'programming', 'with': 'python'}

您使用 %(您的字典键)s 而不是 %s 而不是元组,而是在模运算符之后传递一个 dict 。

检查字符串格式化操作

于 2012-05-19T18:22:02.643 回答