【问题标题】:Setting fixed length with python用python设置固定长度
【发布时间】:2011-07-05 12:22:04
【问题描述】:

我的 str 类似于“60”或“100”。 我需要 str 为 '00060' 和 '00100',

我该怎么做? 代码是这样的: 我使用 '0'+'0'+'0' 作为插头。现在需要修复 d==0006000100

  a4 ='60'
  a5 ='100'

  d=('0'+'0'+'0'+a4+'0'+'0'+a5) 

【问题讨论】:

    标签: python


    【解决方案1】:

    如果“60”已经是一个字符串,您必须在应用格式之前将其转换为数字。最实用的就是像 C 的 printf 一样工作:

    a  ="60"
    b = "%05d" % int(a)
    

    【讨论】:

      【解决方案2】:

      如果它已经是一个字符串,你可能想要使用 .zfill() 方法。

      myval.fill(5)
      

      【讨论】:

        【解决方案3】:

        像这样:

        num = 60 
        formatted_num = u'%05d' % num
        

        有关将数字格式化为字符串的更多信息,请参阅docs

        如果您的号码已经是一个字符串(如更新后的问题所示),您可以使用 rjust 字符串方法将其用零填充到正确的宽度:

        num = u'60'
        formatted_num = num.rjust(5, u'0')
        

        【讨论】:

        • 它是 '60' 我正在结合示例 0006000100,
        • @user:好的,看来王的回答(使用zfill)是适合你的方式,因为它是为你正在做的事情而构建的
        • 来自docs.python.org/release/3.0.1/whatsnew/3.0.html:“仍然支持 % 运算符;它将在 Python 3.1 中被弃用,并在以后从该语言中删除。”。使用 "".format() 代替以实现未来兼容性:u"{0:0>5d}".format(60)u"{0:0>5s}".format(str(60))
        • 我刚刚发现你可以在格式字符串中使用 !s 来强制字符串转换,所以你只需要一个 case 来处理 60 和 '60':"{0!s:0>5s}".format(60)
        【解决方案4】:

        由于您正在处理字符串,str.zfill() 完全符合您的要求。

        >>> s1, s2 = '60', '100'
        >>> print s1.zfill(5), s2.zfill(5)
        00060 00100
        

        【讨论】:

          【解决方案5】:

          感谢阅读您最喜欢的 Python 文档:

          http://docs.python.org/library/string.html#formatstrings

          """

          如果宽度字段前面有一个零 ('0') 字符,这将启用零填充。这等效于对齐类型“=”和填充字符“0”。 """

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-05-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-04-21
            • 1970-01-01
            • 2020-03-29
            相关资源
            最近更新 更多