python译码器

将纯数字译码为Excel列坐标的字母索引表示形式(特殊的二十六进制)

李俊才
邮箱:291148484@163.com

【内容概述】

译码在一定程度上相当于查字典。对于简单的编码,可以通过穷举法将一种字符编码与另外一种字符编码进行对应,只要将对应的字符以一定的形式返回即可。
本文介绍一种在不断试验中进行译码的方法。简而言之,就是先通过“测试法”,获得译码完成后字母的位数,再由高往低逐位通过“测试法”获得该位的值。

【代码实现】

def num_to_Letter(num):bit = 1i = 1a = 0x = int(num) - 26**(bit-i)Letter = ''if x < 0:raise ValueError('error:列坐标索引的数值表示必须为一个正整数')if  num - 26**(bit-i) == 0:return 'A'x = numwhile x >= 0:if x == 0:a = 1            #标志位置1,表示由全A构成x = x - 26**(bit - i)i = i-1if a == 1:for k in range(abs(i)):Letter = Letter + 'A'return LetterNum_of_letters = abs(i)D = {1:'A',2:'B',3:'C',4:'D',5:'E',6:'F',7:'G',8:'H',9:'I',10:'J',11:'K',12:'L',13:'M',14:'N',15:'O',16:'P',17:'Q',18:'R',19:'S',20:'T',21:'U',22:'V',23:'W',24:'X',25:'Y',26:'Z',}alist = []#从最高位开始逐个确定字母for k in range(Num_of_letters+1):if k != 0:alist = [k] + alist#print('alist:',alist)n = numfor k in alist:        # k 为从高位向低位的第k个字母i = kj = 1              # 用于得到 j X (26)的i次方的数字k,再将k由数字映射为字母while (n - j*(26**(i-1))) > 0:j = j + 1j = j - 1n = n - j*(26**(i-1))u = jif k == 1:u = u+1Letter = Letter + D.get(u)return Letter

【小结】
在Excel报表自动化实践中,该方法是很常用的。

代码供大家参考,转载请指明出处。

python报表自动化系列 - 译码:将纯数字译码为Excel列坐标的字母索引表示形式相关推荐

  1. python报表自动化系列 - 译码:与Excel单元格索引对应的十进制数坐标

    python报表自动化 - 与Excel单元格索引对应的十进制数坐标 李俊才 [调用其它函数] Split_num_letters(string) :将字符串中的字母和数字进行拆分. 博文链接:htt ...

  2. python报表自动化系列 - python中索引pandas.DataFrame的内容

    索引DataFrame的内容 李俊才 邮箱:291148484@163.com Ⅰ.按数字索引,返回内容 [函数说明] 函数一个有三个形参,df表示传入的一个提供内容的DataFrame变量,(r,c ...

  3. python报表自动化系列 - Excel单元格(Cell)索引范围对应的所有单元格

    获取指定起止索引内所有的Excel单元格索引 李俊才 邮箱:291148484@163.com [调用其他函数] Cell_A1to11(A1): 将任意范围的Excel索引表示转化为数字索引表示函数 ...

  4. python报表自动化系列 - 拆分一个字符串中的数字和字母

    拆分一个python字符串中的数字和字母 本文介绍在python中将一个由字母和数字组成字符串拆分为字母和数字.废话不多说,代码给出如下. def Split_num_letters(astr):nu ...

  5. python报表自动化系列 - 获取某月日历并以列表形式返回(公历)

    python获取某月日历(公历) 李俊才 邮箱:291148484@163.com [调用其他函数] get_days(yearmonth):获取某月的天数 见我的另外一篇博文,地址为:https:/ ...

  6. python报表自动化系列 - 通过Python使用MySQL数据库

    通过Python使用MySQL数据库实例 李俊才 邮箱:291148484@163.com [函数说明] 如调用本函数,必须先安装有MySQL数据库软件,并已经建立了某个数据库,然后方可使用本函数对已 ...

  7. python报表自动化系列 - 为pandas.DataFrame制作自然数索引(更改索引为从1开始的自然数)

    更改DataFrame索引为从1开始的自然数 [函数说明] 实际上对于人来说更习惯于从零开始索引单元格,这样也不会容易出错.而建立一个DataFrame变量后默认索引是从零开始的,还有一些由于如导入等 ...

  8. python报表自动化系列 - 在Windows中打开指定目录

    python在Windows系统中打开指定目录(文件夹) 李俊才 邮箱:291148484@163.com [函数说明] 该函数可以在windows系统中打开指定的文件夹,参数path应为字符串形式表 ...

  9. python报表自动化系列 - 按照文件名筛选文件

    python按照文件名筛选文件 [函数说明] 通过get_finames_all(path)函数可以返回得到目录(含其子目录)下所有的文件名组成的列表,但是这个列表中并非所有的文件名都是我们需要的,因 ...

最新文章

  1. 工业相机帧率与曝光时间的关系
  2. 《Engineering》评选2021年全球十大工程成就 | 中国工程院院刊
  3. python 操作txt 写入列表
  4. java设计模式之外观模式(门面模式)
  5. Unable to install breakpoint in Modify compiler options to generate line number attributes
  6. 基于Metronic的Bootstrap开发框架经验总结(15)-- 更新使用Metronic 4.75版本
  7. 【算法•日更•第五十五期】知识扫盲:什么是卡常数?
  8. 引用限定符 reference qualifiers
  9. 督查督办管理平台系统
  10. 国考省考行测:继续讲结构分析法的分总、总分、分分、分总分、总分总的真题例题讲解,错项的特点规律
  11. Redis主从复制架构初步探索 http://www.sxt.cn/info-1750-u-324.html#SXT_h2_11
  12. c语言中字符画蛇,字符画:蛇
  13. 虚拟服务器 vmotion,不使用 vMotion 将 VMware 虚拟机从一台主机迁移至另一台主机...
  14. Java简繁体转换分享
  15. 微信程序开发之微信接入篇
  16. NI LabVIEW附加工具包激活,第三方组件授权,网络工具包
  17. 修改taro-ui的样式,在自定义组件中使用taro-ui,修改ui框架样式
  18. 自己做量化交易软件(6)通通量化历史交易回测设计1
  19. 磁盘体系结构和磁盘阵列技术(RAIDLVM)及分区实践
  20. Gavin老师Transformer直播课感悟 - 基于Transformer的Rasa 3.x 内核解密之Fallback and Human Handoff全解(二十四)

热门文章

  1. 【DP + 卖股票】LeetCode 309. Best Time to Buy and Sell Stock with Cooldown
  2. 【贪心】LeetCode 55. Jump Game
  3. 有限项加和的极限求解思路定式
  4. ubuntu 16.04 创建新用户
  5. tensorflow 基础: static shape VS Dynamic shape, get_shape VS tf.shape() , reshape VS set_shape
  6. MySQL 如何利用一条语句实现类似于if-else条件语句的判断
  7. UT源码105032014052
  8. 新添加到Windows Azure 技术内容的现场记录和现实世界的指导
  9. 学习SpringBoot(1)入门及简单的配置
  10. 如何把Spring Boot 项目变成一个XML配置的Spring项目