python检测字符串变量名是否合法

直接继承字符串类

'''
检测字符是否合法
'''
class String(str):
    illegal = {'and': 1, 'elif': 1, 'import': 1, 'return': 1,'as': 1, 'else': 1, 'in': 1, 'try': 1,'assert': 1,
               'except': 1, 'is': 1, 'while': 1,'break': 1, 'finally': 1, 'lambda': 1, 'with': 1, 'class': 1,
               'for': 1, 'not': 1, 'yield': 1,'continue': 1, 'from': 1, 'or': 1,'def': 1, 'global': 1, ' pass': 1,
               'del': 1, 'if': 1, 'raise': 1}
    legal={'0':1,'1':1,'2':1,'3':1,'4':1,'5':1,'6':1,'7':1,'8':1,'9':1,'_':1,'z':1,'x':1,'c':1,'v':1,'b':1,'n':1,
           'm':1,'a':1,'s':1,'d':1,'f':1,'g':1,'h':1,'j':1,'k':1,'l':1,'q':1,'w':1,'e':1,'r':1,'t':1,'y':1,'u':1,
           'i':1,'o':1,'p':1,'Z':1,'X':1,'C':1,'V':1,'B':1,'N':1,'M':1,'L':1,'K':1,'J':1,'H':1,'G':1,'F':1,'D':1,
           'S':1,'A':1,'Q':1,'W':1,'E':1,'R':1,'T':1,'Y':1,'U':1,'I':1,'O':1,'P':1}
    def __init__(self,string):
        str.__init__(self)
        self.__islegal=None
    def isIllegal(self):
        if not self.__islegal==None:
            return self.__islegal
        s=self.strip()
        self.__islegal = False
        if (s==None) or s=='':
            return self.__islegal
        if not (s[0].isalpha() or s[0]=='_'):
            return self.__islegal
        if String.illegal.get(self):
            return self.__islegal
        for i in s:
            if not String.legal.get(i):
                return self.__islegal
        self.__islegal=True
        return self.__islegal

这里直接使用字典,因为字典内部使用哈希表结构,速度很快,还有一点python在创建字符串时就已经计算好了其哈希值,所以后面使用字符串做为字典的键,访问很快。

猜你喜欢

转载自blog.csdn.net/a1053904672/article/details/82891376