【问题标题】:Whats the easiest way to pad an alphabet index both sides with zeroes?用零填充字母索引两侧的最简单方法是什么?
【发布时间】:2014-04-30 15:08:03
【问题描述】:

我需要一个按以下格式对英语进行编码的数据集:
A = (1000000000000000000000000)
B = (0100000000000000000000000)
等等……

在 Python 中用零填充字母索引的最简单方法是什么?

到目前为止,我已经尝试过:

alphabet = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']

        for letter_index in range(len(alphabet)):
            print( '{0} = ({1})'.format(alphabet[letter_index], str(letter_index).rjust(letter_index).ljust(26-letter_index)))

但我的输出是这样的:

A = (0                         )
B = (1                        )
C = ( 2                      )
D = (  3                    )
E = (   4                  )
F = (    5                )
G = (     6              )
H = (      7            )
I = (       8          )
J = (        9        )
K = (        10      )
L = (         11    )
M = (          12  )
N = (           13)
O = (            14)
P = (             15)
Q = (              16)
R = (               17)
S = (                18)
T = (                 19)
U = (                  20)
V = (                   21)
W = (                    22)
X = (                     23)
Y = (                      24)
Z = (                       25)

最后,如果我想用逗号分隔数据集中的数字,最简单的方法是什么?
例如:
A = (1,0,0...)

【问题讨论】:

  • 预期输出是什么?你的问题不是很清楚。
  • 你是什么意思?预期的输出写在那里。我会这样标记它。
  • 你的意思是像','.join(list('1000000000000000000000000'))这样的意思吗?你的问题我一点都不清楚。
  • @dawg -- 你甚至不需要在那里调用list -- 字符串也是可迭代的:)

标签: python padding


【解决方案1】:

以下代码将为您提供所需的输出:

alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
zero25 = "0" * 25
for idx in range (len (alpha)):
    print "%s = (%s1%s)" % (alpha[idx], zero25[:idx], zero25[:25-idx])

具体来说,输出是:

A = (10000000000000000000000000)
B = (01000000000000000000000000)
C = (00100000000000000000000000)
D = (00010000000000000000000000)
E = (00001000000000000000000000)
F = (00000100000000000000000000)
G = (00000010000000000000000000)
H = (00000001000000000000000000)
I = (00000000100000000000000000)
J = (00000000010000000000000000)
K = (00000000001000000000000000)
L = (00000000000100000000000000)
M = (00000000000010000000000000)
N = (00000000000001000000000000)
O = (00000000000000100000000000)
P = (00000000000000010000000000)
Q = (00000000000000001000000000)
R = (00000000000000000100000000)
S = (00000000000000000010000000)
T = (00000000000000000001000000)
U = (00000000000000000000100000)
V = (00000000000000000000010000)
W = (00000000000000000000001000)
X = (00000000000000000000000100)
Y = (00000000000000000000000010)
Z = (00000000000000000000000001)

如果您希望它们用逗号分隔,则可以这样做:

alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
zero25 = "0," * 25

print "%s = (1,%s)" % (alpha[0], zero25[:49])
for idx in range (1, len (alpha)):
    print "%s = (%s,1%s)" % (alpha[idx], zero25[:idx*2-1], zero25[idx*2-1:-1])

输出:

A = (1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
B = (0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
C = (0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
D = (0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
E = (0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
F = (0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
G = (0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
H = (0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
I = (0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
J = (0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
K = (0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
L = (0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
M = (0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0)
N = (0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0)
O = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0)
P = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0)
Q = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0)
R = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0)
S = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0)
T = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0)
U = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0)
V = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0)
W = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0)
X = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0)
Y = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0)
Z = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1)

【讨论】:

    【解决方案2】:

    你可以做类似的事情:

    >>> '{:0<26}'.format('1'.zfill(1))
    '10000000000000000000000000'
    >>> '{:0<26}'.format('1'.zfill(2))
    '01000000000000000000000000'
    

    一个完整的例子是这样的:

    >>> c = 'A'
    >>> '{} = ({:0<26})'.format(c, '1'.zfill(ord(c)-ord('A')+1))
    'A = (10000000000000000000000000)'
    >>> c = 'B'
    >>> '{} = ({:0<26})'.format(c, '1'.zfill(ord(c)-ord('A')+1))
    'B = (01000000000000000000000000)'
    >>> c = 'C'
    >>> '{} = ({:0<26})'.format(c, '1'.zfill(ord(c)-ord('A')+1))
    'C = (00100000000000000000000000)'
    

    【讨论】:

      【解决方案3】:
      >>> for i in range(26):
      ...   print "{} = ({}1{})".format(chr(i+65),'0'*i,'0'*(25-i))
      ... 
      A = (10000000000000000000000000)
      B = (01000000000000000000000000)
      C = (00100000000000000000000000)
      D = (00010000000000000000000000)
      E = (00001000000000000000000000)
      F = (00000100000000000000000000)
      G = (00000010000000000000000000)
      H = (00000001000000000000000000)
      I = (00000000100000000000000000)
      J = (00000000010000000000000000)
      K = (00000000001000000000000000)
      L = (00000000000100000000000000)
      M = (00000000000010000000000000)
      N = (00000000000001000000000000)
      O = (00000000000000100000000000)
      P = (00000000000000010000000000)
      Q = (00000000000000001000000000)
      R = (00000000000000000100000000)
      S = (00000000000000000010000000)
      T = (00000000000000000001000000)
      U = (00000000000000000000100000)
      V = (00000000000000000000010000)
      W = (00000000000000000000001000)
      X = (00000000000000000000000100)
      Y = (00000000000000000000000010)
      Z = (00000000000000000000000001)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-20
        • 2023-03-08
        相关资源
        最近更新 更多