|
发表于 2017-5-19 16:16:06
|
显示全部楼层
另外,写了一种反推的
import re
def spreadsheet(s):
def trans(ss):
col, row = re.findall('^([A-Z]{1,10})(\d{1,5})$', ss)[0]
c = 0
while len(col) > 1:
c = c * 26 + (ord(col[0]) - 64)
col = col[1:]
c = c * 26 + (ord(col[0]) - 64)
return 'R' + row + 'C' + str(c)
if re.match('^R(\d{1,5})C(\d{1,5})$', s):
row, col = re.findall('^R(\d{1,5})C(\d{1,5})$', s)[0]
for aa in range(64, 91):
A = chr(aa) if aa > 64 else ''
for bb in range(64, 91):
B = chr(bb) if bb > 64 else ''
for cc in range(64, 91):
C = chr(cc) if cc > 64 else ''
for dd in range(65, 91):
D = chr(dd) if dd > 64 else ''
col = A + B + C + D
if trans(col + row) == s:
return col + row
elif re.match('^([A-Z]{1,10})(\d{1,5})$', s):
return trans(s)
else:
return None |
|