用零填充字母表索引两边最简单的方法是什么?

2024-03-29 13:38:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个用以下格式编码英语的数据集:
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...)


Tags: 数据方法informat编码forindexlen
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)

你可以这样做:

>>> '{: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)'

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

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)

相关问题 更多 >