0

シンボル リストから特定のシンボルを分割するコードを作成しましたが、バグが多く、正しく動作しません。誰かが私を明確にして助けてくれることを願っています。

私がやりたいことは、この文字列を(たとえば)分割することです-この文字列のリスト'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 コンパイラ タスクの一部です。

4

1 に答える 1

0

わかりました、私は一晩中それについて考え、 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', '(', ')', ';']
于 2019-09-30T04:55:44.517 に答える