※ 引述《opengood5566 ( )》之铭言:
: 比如说进行加一: a变b, at变au, az变ba
: 请问有什么办法可以做到这样吗?
: 感谢!
刚好做过,是要把Excel的字段名称转换为数字。
首先做双向的mapping。
def build_mapping():
a, b = {}, {}
for (x,y) in zip('abcdefghijklmnopqrstuvwxyz',
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,
15,16,17,18,19,20,21,22,23,24,25,26]):
a.udpate({x: y})
b.update({y: x})
return a, b
然后,'at'加一变'au'是这样做:
at = 'at'
x, y = build_mapping() ##这行我曾经遇过assignment不成功,请告诉我为什么
n = reduce(lambda (a,b): a * 10 + b, map(lambda z: x[z], at))
n1 = to_list(n+1, 26) ##把n+1转换成以1为底,26进位的num list
au = string.append(map(lambda n2: y[n2], n1), '')