2010-08-03 23 views
1

Veuillez trouver ci-dessous le code que j'utilise pour marquer une chaîne.Comment gérer les erreurs de jetons?

strList = list(token[STRING] for token in generate_tokens(StringIO(line).readline) if token[STRING]) 

je reçois une erreur qui se lit comme: -

raise TokenError, ("EOF in multi-line statement", (lnum, 0)) 
tokenize.TokenError: ('EOF in multi-line statement', (2, 0)) 

Je souhaite ignorer ces erreurs et être en mesure de terminer le processus de tokens. J'ai beaucoup de données, donc je suis d'accord pour perdre une partie des données à ces erreurs. Cependant, je ne suis pas sûr comment écrire le morceau de code qui permettrait d'implémenter la fonctionnalité désirée. Quelqu'un pourrait-il m'aider avec le code s'il vous plaît?

Merci.

Edit1: -

à essayer la

except tokenize.TokenError: 
    pass 

Je reçois le message d'erreur suivant

except tokenize.TokenError: 
NameError: name 'tokenize' is not defined 

Répondre

3

Notez que votre message d'erreur indique tokenize.TokenError. C'est le type de Exception que votre code augmente. Pour attraper l'erreur, vous utilisez un bloc try...except. Pour ignorer l'erreur, mettez simplement pass dans le bloc except.

import tokenize 
try: 
    strList = list(token[STRING] for token in tokenize.generate_tokens(StringIO(line).readline) if token[STRING]) 
except tokenize.TokenError: 
    pass 
+0

Je l'ai essayé. Cela n'a pas fonctionné. –

+0

Désolé ça a marché. Je n'avais pas importé le module tokenize. Merci de votre aide. –

+1

Ah, c'est vrai. J'ai manqué que vous utilisiez 'generate_tokens' plutôt que' tokenize.generate_tokens'. J'essaie d'éviter les noms de bar à cause de cela: http://stackoverflow.com/questions/1744258/is-import-module-better-coding-style-than-from-module-import-function – unutbu