我想使用 % 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
你有想法吗?谢谢
我想使用 % 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
你有想法吗?谢谢
正确的语法是:
title = "im %s with %s"
title % ("programming", "python")
运算符有%
两个操作数:
最好通过分解这些格式化指令的工作方式来理解这个问题。基本思想是%
字符串中的每个都意味着需要随后将参数提供给字符串。
例如,这将起作用:
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')
不是真正的答案,但是:
你也可以使用类似的东西:
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 。
检查字符串格式化操作