在Python 3中,您可以使用
()来测试给定字符串是否是有效的Python标识符/名称.
>>> 'X'.isidentifier()
True
>>> 'X123'.isidentifier()
True
>>> '2'.isidentifier()
False
>>> 'while'.isidentifier()
True
最后一个示例显示您还应检查变量名称是否与Python关键字冲突:
>>> from keyword import iskeyword
>>> iskeyword('X')
False
>>> iskeyword('while')
True
所以你可以把它放在一个函数中:
from keyword import iskeyword
def is_valid_variable_name(name):
return () and not iskeyword(name)
另一个在Python 2和3中工作的选项是使用ast模块:
from ast import parse
def is_valid_variable_name(name):
try:
parse('{} = None'.format(name))
return True
except SyntaxError, ValueError, TypeError:
return False
>>> is_valid_variable_name('X')
True
>>> is_valid_variable_name('123')
False
>>> is_valid_variable_name('for')
False
>>> is_valid_variable_name('')
False
>>> is_valid_variable_name(42)
False
这将解析赋值语句而不实际执行它.它将选择无效标识符以及尝试分配给关键字.在上面的代码中,None是分配给给定名称的任意值 – 它可以是RHS的任何有效表达式.