【问题标题】:How to format tuples?如何格式化元组?
【发布时间】:2019-12-06 21:39:41
【问题描述】:

如果标题有任何误导性,我深表歉意。我目前的程序遇到问题。我的第一个函数将字符串作为输入并将其转换为元组。我的第二个函数旨在修改和打印元组,例如具有固定宽度字段的表格,这就是我遇到麻烦的地方。这是我尝试过的:

string = 'abc acb bac bca 100000'

def function_one(string):
    modify_one = string.split(' ')
    my_tuple = (modify_one[3], modify_one[2],
    modify_one[4], modify_one[1], modify_one[0])
    print(my_tuple)

    def function_two(my_tuple):

        print(my_tuple)
        formatted = u'{:<15} {:<15} {:<8} {:<5} {:<5}'.format(my_tuple[3], '|', my_tuple[2], '|', my_tuple[4], '|', my_tuple[1], '|', my_tuple[0])
        print(formatted)

    function_two(my_tuple)

function_one(string)

我的输出(仅打印 5 个中的 3 个):

('bca', 'bac', '100000', 'acb', 'abc')
('bca', 'bac', '100000', 'acb', 'abc')
acb             |               100000   |     abc

重要!
我知道只有一个字符串不能看起来像一张桌子。最初我被要求在程序中插入一个文本文件,到目前为止我还没有弄清楚该怎么做。我使用单个字符串只是为了确保函数正常工作。

【问题讨论】:

  • 您的格式参数包含分隔符,但格式字符串中的格式说明符不足。
  • 单个字符串绝对可以看起来像一张表格;您可以在字符串中嵌入换行符。
  • 你的意思可能是'{:&lt;15} | {:&lt;15} | {:&lt;8} | {:&lt;5} | {:&lt;5}'.format(my_tuple[3], my_tuple[2], my_tuple[4], my_tuple[1], my_tuple[0])
  • @Jean-FrançoisFabre 如此简单却如此高效。我不知道它是这样做的。非常感谢。

标签: python string function tuples


【解决方案1】:

您的格式参数包含分隔符,但格式字符串中的格式说明符不足。

你可能是说

'{:<15} | {:<15} | {:<8} | {:<5} | {:<5}'.format(my_tuple[3], my_tuple[2], my_tuple[4], my_tuple[1], my_tuple[0])

也可以写成下面这样,受益于参数可以按位置解包,格式说明符可以指定参数的索引:

'{3:<15} | {2:<15} | {4:<8} | {1:<5} | {0:<5}'.format(*my_tuple)

【讨论】:

  • 是的,我把它改成了这样,因为它更清晰、更短。谢谢。
  • 你能告诉我如何将它们居中对齐吗?
  • 不确定你的意思,但str 有一个center 方法
猜你喜欢
  • 2013-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-25
  • 1970-01-01
相关资源
最近更新 更多