【问题标题】:How can I pass a tuple to str.format()?如何将元组传递给 str.format()?
【发布时间】:2015-04-27 06:27:10
【问题描述】:

我正在尝试使用str.format() 函数以列打印矩阵。

这是出错的那一行:

>>>> "{!s:4}{!s:5}".format('j',4,3)
'j   4    '
>>>> "{!s:4}{!s:5}".format(b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
>>> b
('dat', 'is')

我做错了什么?

编辑: 我想我知道问题出在哪里:我正在传递一个包含两个元素的元组,然后将其作为一个包含一个元素的元组传递给函数,即我的原始元组。因此出现这个错误。所以问题是如何将这个元组传递给格式函数......

【问题讨论】:

    标签: python string tuples string.format


    【解决方案1】:

    如果你能确定它的长度,你可以解包它。

    >>> "{!s:4}{!s:5}".format(*b)
    'j   4    '
    

    【讨论】:

      【解决方案2】:

      编辑:抱歉,在我完全理解之前我太早回答了你的问题。我想你想解压元组,就像 progo 的回答一样。

      这取决于您使用的 Python 版本。以下适用于 Python 3.5(可能所有 Python 3)。

      代码:

      b = ("dat", "is")
      "{0}".format(b)
      

      输出:

      "('dat', 'is')"
      

      同时检查Python docs on string formatting。

      【讨论】:

      • 它也适用于 Python 2.x。你只是想打印一个值{0},这就是你得到的——b 的值。 "{0}, {1}".format(b) 失败("{1}".format(b) 也是如此)。这不能回答 OP 的问题。
      猜你喜欢
      • 2011-09-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多