给定 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})$
可视化这一点:
第一组捕获 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/