Python 3.x 将字符串传递到";字母表;包含用于词法分析的特定字符的

Python 3.x 将字符串传递到";字母表;包含用于词法分析的特定字符的,python-3.x,token,lexical-analysis,dfa,Python 3.x,Token,Lexical Analysis,Dfa,在python中,我想知道如何传递检查的字符串: 如果某事物只包含字母数字字符 如果某物只包含数字 如果某物既不包含字母数字字符也不包含数字 我很难理解语法,我特别需要这样的字符串,而不是使用内置函数进行词法分析。以下内容将明确我要做的事情: alphanumeric=r'[a-zA-Z]+' digit=r'[0-9]' other=r'![a-zA-Z_0-9]' alphabet = {alphanumeric ,digit,other} 此字母表和其他DFA属性将被输入DFA对象的函数

在python中,我想知道如何传递检查的字符串:

  • 如果某事物只包含字母数字字符
  • 如果某物只包含数字
  • 如果某物既不包含字母数字字符也不包含数字
  • 我很难理解语法,我特别需要这样的字符串,而不是使用内置函数进行词法分析。以下内容将明确我要做的事情:

    alphanumeric=r'[a-zA-Z]+'
    digit=r'[0-9]'
    other=r'![a-zA-Z_0-9]'
    alphabet = {alphanumeric ,digit,other}
    
    此字母表和其他DFA属性将被输入DFA对象的函数run_with_input_list(),其中包含一些用户定义的字符串。dfa类结构如下所示:

    class DFA:
        current_state = None
    
        def __init__(self, states, alphabet, transition_function, start_state, accept_states):  #5-tupple
            self.states = states
            self.alphabet = alphabet
            self.transition_function = transition_function
            self.start_state = start_state
            self.accept_states = accept_states
            self.current_state = start_state
            return
    
        def transition_to_state_with_input(self, input_value):
            if ((self.current_state, input_value) not in self.transition_function.keys()):
                self.current_state = None
                return
            self.current_state = self.transition_function[(self.current_state, input_value)]
            return
    
        def in_accept_state(self):
            if self.current_state in self.accept_states:
                print("String Accepted")
            else:
                print("String Rejected")
    
        def go_to_initial_state(self):
            self.current_state = self.start_state
            return
    
        def run_with_input_list(self, input_list):
            self.go_to_initial_state()
            for inp in input_list:
                self.transition_to_state_with_input(inp)
                continue
            return self.in_accept_state()
    
        pass
    
        def validity(self,input_list):   #checking whether the input string is valid
            for a in input_list:
                if a in self.alphabet:
                    continue
                else:
                    print("Invalid String")
                    return 0
            return 1
    

    Python正则表达式已经为此设置了特殊字符-数字具有
    \d
    字母数字具有
    \w
    ,非字母数字字符具有
    \w


    参考资料:

    我不太明白“假冒”是什么意思,但以下是您可以使用的方法:

    1) 检查它是否只包含字母

    print("abcd".isalpha()) #True
    print("abcd123".isalpha()) #False
    print("123".isalpha()) #False
    
    2) 检查它是否只包含数字

    print("123".isnumeric()) #True
    print("abcd".isnumeric()) #False
    print("abcd123".isnumeric()) #False
    
    3) 检查它是否只包含字母/数字

    print("abc123".isalnum()) #True
    print("abc???".isalnum()) #False
    

    Python为此类操作提供了标准帮助程序,请看以下示例:

    def what_is(s):
        is_num = s.isnumeric()
        is_alpha = s.isalpha()
        is_other = not is_num and not is_alpha
        return is_num, is_alpha, is_other
    
    
    def main():
        alpha = "Ciao"
        num = "0102"
        other = "£*+]"
        print(what_is(alpha))
        print(what_is(num))
        print(what_is(other))
    

    实际上,我需要特别使用我指定的字符串,如[A-Za-z]。实际上,我需要特别使用我指定的字符串,如[A-Za-z]。@MujtabaFaizi,由
    isalpha处理