jfa*_*oni 3 python string excel openpyxl
给定一些 Python 中的字母数字字符串,例如
A9 B44BC1014D4我如何检查字符串是否是有效的 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
Run Code Online (Sandbox Code Playgroud)
根据我的评论,有效性取决于 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
530 次 |
| 最近记录: |