【问题标题】:Generating a range of numbers as strings Python生成一系列数字作为字符串Python
【发布时间】:2017-11-03 10:43:15
【问题描述】:

我需要遍历多个具有结构化文件名的文件。

它们的形式为“Mar00.sav”、“Sep00.sav”、“Mar01.sav”

目前我正在这样做;

Years = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17']

哪个有效,但我想知道是否有更好的方法?

我尝试了范围,但str(range(00,17)) 会去掉前导零...

【问题讨论】:

    标签: python loops


    【解决方案1】:

    我遇到了同样的问题,并且有一个完美的解决方案 -zfill 方法

    使用示例:

    >>> str('1').zfill(7)
    '0000001'
    

    你需要做的是为 N 个数字创建一个生成器,并用零填充它的字符串表示。

    >>> for i in range(1, 18):
    ...     str(i).zfill(2)
    ...
    '01'
    '02'
    '03'
    ...
    '16'
    '17'
    

    【讨论】:

      【解决方案2】:
      >>> [str(i).zfill(2) for i in range(1,18)]
      ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17']
      

      【讨论】:

        【解决方案3】:

        在python 2.7中,可以这样实现

        >>> ["%02d" %i for i in range(0,17)]
        ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16']
        >>> 
        

        如果你想打印

        >>> for i in range(00,17):
                print '%02d' %i
        
        
        00
        01
        02
        03
        04
        05
        06
        07
        08
        09
        10
        11
        12
        13
        14
        15
        16
        >>> 
        

        【讨论】:

        • Python 2.7 已经支持字符串对象的格式化方法。所以你可以通过这样做来兼容 Python 3.x:["{:02}".format(n) for n in range(17)]
        【解决方案4】:

        在 Python 3 中你可以使用 f 字符串:

        >>>[f"{i:02d}" for i in range(0,17)]
        ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16']
        

        【讨论】:

          猜你喜欢
          • 2017-05-14
          • 2020-07-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多