python生成一串字母序列(可配合excel)
在用python操作excel,尤其是用openpyxl做自动化脚本的时候,经常会碰到大批量的’取数–>填数’的操作。
可是要把一些数据填入指定的列,但是这些列的字母又都是相连的,比如‘BA’,‘BB’,‘BC’…'CZ’这种情况总不能一个字母一个字母的敲到程序里吧,所以做了一个函数,解决这个问题。
def generate_alphabetic_sequence(start, end):
import string
start = start.upper()
end = end.upper()
def letter2number(s): #把字母转换成数字
if len(s) == 1:
part1 = ord(s[0]) - 64
return part1
elif len(s) == 2:
part1 = (ord(s[0]) - 64) * 26
part2 = ord(s[1]) - 64
return part1 + part2
elif len(s) == 3:
part1 = (ord(s[0]) - 64) * 26 * 26
part2 = (ord(s[1]) - 64) * 26
part3 = ord(s[2]) - 64
return part1 + part2 + part3
else:
raise Exception('The maximum number of Excel columns is 3')
def get_column_name(ind):#数字转换字母
alp = ''
ci = ind - 1
index = ci // 26
if index > 0:
alp += get_column_name(index)
alp += string.ascii_uppercase[ci % 26]
return alp
start = letter2number(start)
end = letter2number(end)
if start > 16384 or end > 16384:
raise Exception('column number exceed 16384')
res = []
for i in range(start, end + 1):
res.append(get_column_name(i))
return res #返回一个列表
你输入(‘aa’,‘ac’),就会返回[‘AA’,‘AB’,‘AC’],因为excel最大的列数为XFD,即16384,所以在函数里做了限制,如果不需要,删掉就好了。