首页 > 解决方案 > 从具有特定符号和其他字符的字符串中拆分符号

问题描述

我已经编写了将特定符号从符号列​​表中拆分出来的代码,但是它有问题并且无法正常工作。我希望有人能澄清和帮助我。

我想做的是将这个字符串(例如)拆分到这个字符串'game.run();'列表中——['game','.','run','(', ')',';']其中符号列表——

Symbollst = [
        '{' , '}' , '(' , ')' , '[' , ']' , '.' ,
        ',' , ';' , '+' , '-' , '*' , '/' , '&' ,
        ',' , '<' , '>' , '=' , '~'
        ]

我的初始代码:

 for token in r_splitted :
    if any(x in token for x in Symbollst) :
        TokenInSymbol = [i in token for i in Symbollst]
        new_token = token.split(Symbollst[TokenInSymbol.index(True)])
        new_token.insert(1,Symbollst[TokenInSymbol.index(True)])
        for i in new_token :
            if i=='' : continue
            self.TokenList.append(i)

注意 - 这是 Nand2Tetris 编译器任务的一部分。

标签: pythonparsingsplittokennand2tetris

解决方案


好的,我已经考虑了一夜,并想出了一个解决方案,使用 list(token) 来分隔每个字符并单独处理它:

Symbollst = [
        '{' , '}' , '(' , ')' , '[' , ']' , '.' ,
        ',' , ';' , '+' , '-' , '*' , '/' , '&' ,
        ',' , '<' , '>' , '=' , '~'
        ]

token = 'game.run();'
temp_token = list(token)
new_token=[]
string=''

for i in temp_token :
    if i in Symbollst :
        if not string=='' : new_token.append(string)
        new_token.append(i)
        string=''
    else : string = string + i

print new_token

所以对于输入 -

token = 'game.run();'

输出将是:

new_token = ['game', '.', 'run', '(', ')', ';']

推荐阅读