python - 检查 Python 字符串是否是有效的 Excel 单元格

标签 python excel string openpyxl

给定 Python 中的一些字母数字字符串,例如

  • A9
  • B44B
  • C101
  • 4D4

如何检查字符串是否为有效的 Excel 单元格(即字母在数字之前)?

我尝试使用 .isalpha.isdigit 方法“收集”字母和数字,然后使用 .index 来检查所有字母是否都出现在数字之前,但我的逻辑变得太复杂,而且我觉得我没有考虑到所有可能性。

有没有简单的方法可以实现这一点?

预期结果:

>>> is_valid_excel_cell('A9')
True
>>> is_valid_excel_cell('B44B')
False
>>> is_valid_excel_cell('C101')
True
>>> is_valid_excel_cell('4D4')
False

最佳答案

根据我的评论,有效性取决于 Excel 版本。较新版本的列范围为 A-XDF,行范围为 1-1048576。在您的项目中可能没有必要,但为了将来的引用,它可能会很方便:

正则表达式模式:^([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([1-9]\d{0,6})$

可视化这一点:

Regular expression visualization

第一组捕获 Excel 2010 及更高版本的列引用,即 A-XDF,第二组捕获应始终以 1-9 开头的数字部分后跟 0 到 6 个字符,但不能超过 1048576

因此,您可以考虑一下:

import re
def is_valid_excel_cell(c):
    m = re.match(r'^([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([1-9]\d{0,6})$',c)
    return bool(m) and int(m.group(2)) < 1048577

关于python - 检查 Python 字符串是否是有效的 Excel 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60758670/

相关文章:

python - pygame如何检查鼠标坐标

c - 句子倒转功能

cocoa - 确定 Cocoa (MAC OSX) 中字符串的像素长度

python - PyQt5:创建具有非透明子项的半透明窗口

python - 如何重新配置​​ tkinter Canvas 项目?

excel - 如何在 Excel 加载项中保存用户首选项?

r - 使用 R 下载 Excel 文件

excel - 在文本字符串中间的货币值末尾添加 "0"

python - 仅从python中的字符串中获取所需的部分

python - 按位 "&"ing 未指定数量的数据帧掩码?