格式字符串的 Python 解包参数列表

标签 python

我有一个基于用户输入动态创建的格式字符串。我在列表中收集格式字符串的参数,我想知道如何在格式字符串的末尾解压缩它们。我看到了一些似乎与此相关的问题,但我对 Python 还很陌生,我似乎无法将他们的解决方案应用到我的案例中。

我想做的事情的想法是:

my_string = "string contents" % tuple([for item in var_array])

当然这不是有效的语法,但希望它描述了我正在尝试做的事情:我想在不提前知道 var_array 的长度的情况下将 var_array 解压为我的参数列表。我怎么能这样做?

编辑: 我会尝试更好地解释我的问题。我通过连接未知数量的格式字符串来创建格式字符串。因此,我的最终字符串将具有可变数量的 %s,因此在列表中收集的可变数量的 args。

例如:

"My format string might have %s or %s arguments" %([arg_list]) //here arg_list has 2 arguments

"But my format string might also have %s or %s or %s arguments. %([arg_list]) //here arg_list has 3 arguments 

格式字符串的长度和参数的数量根据用户输入而变化,因此我希望能够在最终字符串的末尾附加一个参数列表。这可能吗?

最佳答案

这是一种从参数到格式化字符串的方法(仍然需要错误检查):

>>> def StartDance(*args):
        return "%d, %d, %d, %d!" % tuple(args)

>>> StartDance(5, 6, 7, 8)
'5, 6, 7, 8!'

这是一个更强大的错误检查解决方案,但考虑到它增加了多少额外的复杂性,我将其作为一个单独的答案呈现:

>>> def StartDance(*args):
        return (", ".join(["%d"] * len(args))+"!") % tuple(args)
>>> StartDance(5, 6, 7, 8)
'5, 6, 7, 8!'
>>> StartDance(5, 6, 7, 8, 9, 10)
'5, 6, 7, 8, 9, 10!'
>>> StartDance(1)
'1!'

这是一个返回列表的函数,该列表被解包为参数,只是为了将这些参数视为列表(Python 很有趣 :)

>>> StartDance(*range(5,9))
'5, 6, 7, 8!'

关于格式字符串的 Python 解包参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17075603/

相关文章:

python - 从 XML 标签创建原始文本

python - AttributeError : dlsym(RTLD_DEFAULT, AbsoluteToNanoseconds):找不到符号

python - 使用正则表达式时得到不正确的匹配

python - 为什么 ,,b = 1,2,3 在 IPython 中被解析为 (',b' , '=' , '1,2,3' )?

python - 根据numpy数组中一行中的重复值删除列

python - MagicMock在python 3.x中获取数据的响应

python - Sklearn - 发现输入变量的样本数量不一致 : [16512, 4128]

Python Turtle 属性错误 : 'Turtle' object has no attribute 'position'

python - Django模型字段默认基于另一个模型字段

python - 如何使用 matplotlib 将 timedelta 绘制为值