【问题标题】:Python padding strings of different length不同长度的Python填充字符串
【发布时间】:2018-05-27 23:35:50
【问题描述】:

所以我有一个问题,我知道可以通过字符串格式化来解决,但我真的不知道从哪里开始。 我想要做的是创建一个填充列表,以便在逗号前有 n 个字符,如下面的列表所示。

 1148,
   39,
  365,
    6、
56524,

干杯并感谢您的帮助:)

【问题讨论】:

    标签: python string formatting padding


    【解决方案1】:

    最直接的方法是使用str.rjust() 函数。例如:

    your_list = [1148, 39, 365, 6, 56524]
    
    for element in your_list:
        print(str(element).rjust(5))
    

    你会得到:

    1148 39 365 6 56524

    还有str.center()str.ljust()用于其他方向的字符串对齐。

    但你也可以通过格式化来做到这一点:

    your_list = [1148, 39, 365, 6, 56524]
    
    for element in your_list:
        print("{:>5}".format(element))
    

    【讨论】:

    • 对不起,我搞砸了,我还应该说的是,我正在逐行将行写入 csv 文件,而不是从列表中。所以我需要的是,尽管第一个整数的长度不同,但每行中的第一个逗号要对齐。
    • 您可以使用上述技术来“填充”每一行的第一个元素 - 您只需要预先找出最大长度(最大值)。因此,首先遍历您的数据并找到最大值,然后获取其字符长度(len(str(largest_value))),然后在填充第一个元素时将该数字用于str.rjust()。不用担心昏迷之类的问题 - 在生成实际的 CSV 结构时,请使用内置的 csv 模块进行投标。
    【解决方案2】:

    Format Specification Mini-Language

    您正在寻找类似"{:5d},".format(i) 的东西,其中i 是要打印的整数,宽度为5。

    对于变量width"{:{}d},".format(i, width)

    【讨论】:

      【解决方案3】:

      假设你知道 n 是什么你可以做: '{:>n}'.format(number)

      因此,如果您有一个整数列表并希望按上述方式对其进行格式化,您可以这样做:

      numbers = [1148, 39, 365, 6, 56524]
      result = '\n'.join(('{:>5},'.format(x) for x in numbers))
      

      【讨论】:

        猜你喜欢
        • 2021-11-30
        • 1970-01-01
        • 1970-01-01
        • 2013-09-27
        • 2013-09-20
        • 2018-07-09
        • 1970-01-01
        • 2016-01-31
        • 2014-05-22
        相关资源
        最近更新 更多