python报表自动化系列 - 译码:将纯数字译码为Excel列坐标的字母索引表示形式
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列坐标的字母索引表示形式相关推荐
- python报表自动化系列 - 译码:与Excel单元格索引对应的十进制数坐标
python报表自动化 - 与Excel单元格索引对应的十进制数坐标 李俊才 [调用其它函数] Split_num_letters(string) :将字符串中的字母和数字进行拆分. 博文链接:htt ...
- python报表自动化系列 - python中索引pandas.DataFrame的内容
索引DataFrame的内容 李俊才 邮箱:291148484@163.com Ⅰ.按数字索引,返回内容 [函数说明] 函数一个有三个形参,df表示传入的一个提供内容的DataFrame变量,(r,c ...
- python报表自动化系列 - Excel单元格(Cell)索引范围对应的所有单元格
获取指定起止索引内所有的Excel单元格索引 李俊才 邮箱:291148484@163.com [调用其他函数] Cell_A1to11(A1): 将任意范围的Excel索引表示转化为数字索引表示函数 ...
- python报表自动化系列 - 拆分一个字符串中的数字和字母
拆分一个python字符串中的数字和字母 本文介绍在python中将一个由字母和数字组成字符串拆分为字母和数字.废话不多说,代码给出如下. def Split_num_letters(astr):nu ...
- python报表自动化系列 - 获取某月日历并以列表形式返回(公历)
python获取某月日历(公历) 李俊才 邮箱:291148484@163.com [调用其他函数] get_days(yearmonth):获取某月的天数 见我的另外一篇博文,地址为:https:/ ...
- python报表自动化系列 - 通过Python使用MySQL数据库
通过Python使用MySQL数据库实例 李俊才 邮箱:291148484@163.com [函数说明] 如调用本函数,必须先安装有MySQL数据库软件,并已经建立了某个数据库,然后方可使用本函数对已 ...
- python报表自动化系列 - 为pandas.DataFrame制作自然数索引(更改索引为从1开始的自然数)
更改DataFrame索引为从1开始的自然数 [函数说明] 实际上对于人来说更习惯于从零开始索引单元格,这样也不会容易出错.而建立一个DataFrame变量后默认索引是从零开始的,还有一些由于如导入等 ...
- python报表自动化系列 - 在Windows中打开指定目录
python在Windows系统中打开指定目录(文件夹) 李俊才 邮箱:291148484@163.com [函数说明] 该函数可以在windows系统中打开指定的文件夹,参数path应为字符串形式表 ...
- python报表自动化系列 - 按照文件名筛选文件
python按照文件名筛选文件 [函数说明] 通过get_finames_all(path)函数可以返回得到目录(含其子目录)下所有的文件名组成的列表,但是这个列表中并非所有的文件名都是我们需要的,因 ...
最新文章
- 工业相机帧率与曝光时间的关系
- 《Engineering》评选2021年全球十大工程成就 | 中国工程院院刊
- python 操作txt 写入列表
- java设计模式之外观模式(门面模式)
- Unable to install breakpoint in Modify compiler options to generate line number attributes
- 基于Metronic的Bootstrap开发框架经验总结(15)-- 更新使用Metronic 4.75版本
- 【算法•日更•第五十五期】知识扫盲:什么是卡常数?
- 引用限定符 reference qualifiers
- 督查督办管理平台系统
- 国考省考行测:继续讲结构分析法的分总、总分、分分、分总分、总分总的真题例题讲解,错项的特点规律
- Redis主从复制架构初步探索 http://www.sxt.cn/info-1750-u-324.html#SXT_h2_11
- c语言中字符画蛇,字符画:蛇
- 虚拟服务器 vmotion,不使用 vMotion 将 VMware 虚拟机从一台主机迁移至另一台主机...
- Java简繁体转换分享
- 微信程序开发之微信接入篇
- NI LabVIEW附加工具包激活,第三方组件授权,网络工具包
- 修改taro-ui的样式,在自定义组件中使用taro-ui,修改ui框架样式
- 自己做量化交易软件(6)通通量化历史交易回测设计1
- 磁盘体系结构和磁盘阵列技术(RAIDLVM)及分区实践
- Gavin老师Transformer直播课感悟 - 基于Transformer的Rasa 3.x 内核解密之Fallback and Human Handoff全解(二十四)
热门文章
- 【DP + 卖股票】LeetCode 309. Best Time to Buy and Sell Stock with Cooldown
- 【贪心】LeetCode 55. Jump Game
- 有限项加和的极限求解思路定式
- ubuntu 16.04 创建新用户
- tensorflow 基础: static shape VS Dynamic shape, get_shape VS tf.shape() , reshape VS set_shape
- MySQL 如何利用一条语句实现类似于if-else条件语句的判断
- UT源码105032014052
- 新添加到Windows Azure 技术内容的现场记录和现实世界的指导
- 学习SpringBoot(1)入门及简单的配置
- 如何把Spring Boot 项目变成一个XML配置的Spring项目