• 回答数

    0

  • 浏览数

    664

  • 收藏数

    0

作者:团子良 发表于 2022-8-23 10:26:49
跳转到指定楼层
在平时进行关于excel的开发的时候,经常会因为列id而烦恼,每一次都要去数一下,所以今天抽空写了一个小程序,通过ASCII码的方式进行进制转换,也就是从excel列标的字母26进制转换为十进制的整数。该函数需要使用python执行。

  1. def alphabet2num(s):
  2.     """
  3.     在做关于excel的开发的时候,非常头疼列的序号的问题,AH列究竟应该是多少列呢?
  4.     这个函数就是为了解决这个问题设计的。
  5.     :param s: 传入excel列标, 如AH, 不区分大小写。
  6.     :return: 返回列序号, A列为0
  7.     """
  8.     if isinstance(s, str):
  9.         num = 0
  10.         s = s.upper()[::-1]
  11.         for i in range(s.__len__()):
  12.             if 65 <= ord(s[i]) <= 90:
  13.                 num += (ord(s[i])-64)*26**i
  14.             else:
  15.                 raise ValueError("请输入正确的列标,必须为字母组成!")
  16.         return num-1
  17.     else:
  18.         raise ValueError("请输入正确的列标,必须为字母组成!")


  19. print(alphabet2num("ah"))
复制代码
在使用的时候只需要将你的目标列标传入函数就可以得到它位于多少列了,这个函数在配合pandas进行切片的时候还是挺好用的,目前使用过程中没有发现错误或者bug,欢迎反馈使用过程中的错误。
分享:
回复

使用道具

成为第一个回答人

高级模式 评论
您需要登录后才可以回帖 登录 | 立即注册 微信登录