给出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
给出Python中的一些字母数字字符串,例如A9 B44B C101 4D4,如何检查该字符串是否为有效的Excel单元格(即字母位于数字前)?我试过使用.isalpha和....
我将使用正则表达式,非常适合该任务:
import re
def is_valid_excel_cell(c):
m = re.match("[A-Z]+\d+$",c)
return bool(m)
根据我的评论,有效性取决于Excel版本。较新的版本具有A-XDF
的列范围和1-1048576
的行。它在您的项目中可能不是必需的,但为将来参考可能会很方便:
import re
def is_valid_excel_cell(addr):
m = re.match(r'^([A-Z]{1,3})([1-9]\d*)$', addr)
if not m:
return False
letters, numbers = m.groups()
if len(letters) == 3 and letters > 'XFD':
return False
if int(numbers) > 1048576:
return False
return True