python - How to format variable number of arguments into a string?
我们知道,可以使用字符串中的一个
1 2 | >>>"Hello %s" %"world" 'Hello world' |
对于两个参数,我们可以使用两个
1 2 | >>>"Hello %s, %s" % ("John","Joe") 'Hello John, Joe' |
那么,如何在不必在基字符串中显式定义与要格式化的参数数目相等的数目的参数的情况下格式化变量个数的参数呢?如果存在这样的情况,那将是非常酷的:
1 2 3 4 | >>>"Hello <cool_operator_here>" % ("John","Joe","Mary") Hello JohnJoeMary >>>"Hello <cool_operator_here>" % ("John","Joe","Mary","Rick","Sophie") Hello JohnJoeMaryRickSophie |
这是可能的,还是我唯一能做的就是:
1 2 3 4 | >>> my_args = ["John","Joe","Mary"] >>> my_str ="Hello" + ("".join(["%s"] * len(my_args))) >>> my_str % tuple(my_args) "Hello JohnJoeMary" |
注意:我需要使用
更新:
它需要与
所以我要称之为:
1 2 | >>> function_in_library("Hello <cool_operator_here>", ["John","Joe","Mary"]) "Hello JohnJoeMary" |
谢谢你的帮助!
在列表中使用
1 | "Hello %s" % ', '.join(my_args) |
演示:
1 2 3 | >>> my_args = ["foo","bar","baz"] >>>"Hello %s" % ', '.join(my_args) 'Hello foo, bar, baz' |
如果您的一些参数还不是字符串,请使用列表理解:
1 2 3 | >>> my_args = ["foo","bar", 42] >>>"Hello %s" % ', '.join([str(e) for e in my_args]) 'Hello foo, bar, 42' |
或使用
1 2 | >>>"Hello %s" % ', '.join(map(str, my_args)) 'Hello foo, bar, 42' |
你也可以这样做:
1 | function_in_library("Hello %s", ', '.join(my_args)) |
如果您受到(相当任意的)限制,不能在插值参数列表中使用
1 | function_in_library("Hello %s" % ', '.join(['%s'] * len(my_args)), my_args) |