类似excel的Python字符串索引

类似excel的Python字符串索引,python,python-3.x,Python,Python 3.x,我想要像excel标题一样的序列 e、 g: A、B、C、…、Z、AA、AB…… 我的代码 >>> s = 'A' >>> chr(ord(s) + 1) 'B' >>> s = 'Z' >>> chr(ord(s) + 1) '[' >>> # I want AA after chr(ord('Z') + 1) 您可以尝试以下方法: def get_colnum_string(n): st

我想要像excel标题一样的序列

e、 g: A、B、C、…、Z、AA、AB……

我的代码

>>> s = 'A'
>>> chr(ord(s) + 1)
'B'
>>> s = 'Z'
>>> chr(ord(s) + 1)  
'['
>>> 
# I want AA after chr(ord('Z') + 1)
您可以尝试以下方法:

def get_colnum_string(n):
    string = ""
    while n > 0:
        n, remainder = divmod(n - 1, 26)
        string = chr(65 + remainder) + string
    return string

简单地说,您可以创建一个包含序列的列表。 这很简单,但还不够好。 e、 g

seq=['A','B',…'ZZ']
s='A'#s.toupper()如果需要。
idx=序列索引
如果idx<0:
打印('不按顺序')
返回#或退出
next=idx+1
如果下一步>=len(seq):
下一个=0
打印(顺序[下一步])
假设您想进入“
n
deep”,这意味着您希望最后一个标题包含
n
字母:

import itertools
import string


def generateHeaders(n=None):
    if n is None: nums = itertools.count(1)
    else: nums = range(1, n+1)

    for n in nums:
        yield from map(''.join, itertools.product(*([string.ascii_uppercase]*n)))
输出测试:

for _,header in zip(range(60), generateHeaders()): print(header)


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
AA
AB
AC
AD
AE
AF
AG
AH
AI
AJ
AK
AL
AM
AN
AO
AP
AQ
AR
AS
AT
AU
AV
AW
AX
AY
AZ
BA
BB
BC
BD
BE
BF
BG
BH
使用itertools

import itertools

alpha = [chr(x) for x in range(65, 91)] # create a list of character's

print(alpha + [k + v for k,v in itertools.product(alpha, repeat=2)])

您也可以使用
string.ascii_大写
而不是
alpha
import itertools

alpha = [chr(x) for x in range(65, 91)] # create a list of character's

print(alpha + [k + v for k,v in itertools.product(alpha, repeat=2)])