类似excel的Python字符串索引
我想要像excel标题一样的序列 e、 g: A、B、C、…、Z、AA、AB…… 我的代码类似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
>>> 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)])