【问题标题】:in python how do I convert a single digit number into a double digits string?在 python 中,如何将一位数转换为两位数字符串?
【发布时间】:2010-08-17 18:46:47
【问题描述】:

所以说我有

a = 5

我想将它打印为字符串'05'

【问题讨论】:

标签: python string numbers digits


【解决方案1】:

在 python 3.6 中,引入了fstring 或“格式化字符串文字”机制。

f"{a:02}"

相当于下面的 .format 格式,但更简洁一些。


3.6 之前的 python 3 更喜欢更冗长的格式化系统:

"{0:0=2d}".format(a)

你可以在这里走捷径,上面可能是最冗长的变体。完整文档可在此处获得:http://docs.python.org/3/library/string.html#string-formatting


print "%02d"%a 是 python 2 的变种

python2的相关文档链接为:http://docs.python.org/2/library/string.html#format-specification-mini-language

【讨论】:

  • 新的 Python 3 格式在 2.6 中也可用,2.7/3 允许您使用位置参数更加简洁。
  • 简单地说,"{:02d}".format(a) 也可以!如果您想要 4 位数字,只需将 2 替换为 4 "{:04d}".format(a)。这是针对 Python3 的。
  • 无论符号(正或负)如何,我如何计算 4 位数字?所以如果我有-10,它应该是-0010。 10 将是 0010。
【解决方案2】:
a = 5
print '%02d' % a
# output: 05

当与左侧的字符串一起使用时,'%' 运算符称为string formatting 运算符。 '%d' 是打印出整数的格式代码(如果值不是数字,则会出现类型错误)。使用'%2d 可以指定长度,'%02d' 可以用于将填充字符设置为 0 而不是默认空格。

【讨论】:

    【解决方案3】:
    >>> print '{0}'.format('5'.zfill(2))
    05
    

    阅读更多here

    【讨论】:

      【解决方案4】:
      >>> a=["%02d" % x for x in range(24)]
      >>> a
      ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23']
      >>> 
      

      就这么简单

      【讨论】:

        【解决方案5】:

        在 Python3 中,您可以:

        print("%02d" % a)
        

        【讨论】:

          【解决方案6】:

          在 Python 3.6 中,您可以使用所谓的 f 字符串。在我看来,这种方法更容易阅读。

          >>> f'{a:02d}'
          '05'
          

          【讨论】:

            【解决方案7】:

            根据@user225312 所说,您可以使用 .zfill() 将填充添加到转换为字符串的数字中。

            我的方法是将数字保留为数字,直到您想将其转换为字符串:

            >>> num = 11
            >>> padding = 3
            >>> print(str(num).zfill(padding))
            011
            

            【讨论】:

            • 谢谢!这正是我想要的
            【解决方案8】:

            Mohommad 的回答分支:

            str_years = [x for x in range(24)]
            #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
            
            #Or, if you're starting with ints:
            int_years = [int(x) for x in str_years]
            
            #Formatted here
            form_years = ["%02d" % x for x in int_years]
            
            print(form_years)
            #['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23']
            
            

            【讨论】:

              【解决方案9】:
              df["col_name"].str.rjust(4,'0')#(length of string,'value') --> ValueXXX --> 0XXX  
              df["col_name"].str.ljust(4,'0')#(length of string,'value') --> XXXValue --> XXX0
              

              【讨论】:

                【解决方案10】:

                如果您是分析师而不是全栈人员,这可能更直观:

                [(str('00000') + str(i))[-5:] for i in arange(100)]
                

                打破它,你:

                • 首先创建一个重复 0 或 X 的列表,在本例中为 100 长,即 arange(100)

                • 将您想要的数字添加到字符串中,在本例中为数字 0-99,即 'i'

                • 只保留右手 5 位数字,即 '[-5:]' 用于子集化

                • 输出为编号列表,全部为5位

                【讨论】:

                  【解决方案11】:

                  这是一个愚蠢的解决方案,但我在上面的其他解决方案中遇到了类型错误。所以如果一切都失败了,yolo:

                  images3digit = []
                  
                  for i in images:
                          if len(i)==1:
                              i = '00'+i
                              images3digit.append(i)
                          elif len(i)==2:
                              i = '0'+i
                              images3digit.append(i)
                          elif len(i)==3:
                              images3digit.append(i)
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2021-08-08
                    • 2019-08-06
                    • 1970-01-01
                    • 2013-12-22
                    • 2020-05-25
                    • 2019-05-11
                    • 1970-01-01
                    • 2011-07-02
                    相关资源
                    最近更新 更多