Как обрабатывать ошибки токенизации? - PullRequest
1 голос
/ 03 августа 2010

Пожалуйста, найдите ниже фрагмент кода, который я использую для токенизации строки.

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

Я получаю ошибку, которая выглядит следующим образом: -

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

Я хочу игнорировать такиеошибки и быть в состоянии завершить процесс токенизации.У меня много данных, поэтому я согласен потерять часть данных из-за этих ошибок.Однако я не уверен, как написать фрагмент кода, который позволил бы реализовать желаемую функциональность.Может кто-нибудь помочь мне с кодом, пожалуйста?

Спасибо.

Edit1: -

при попытке

except tokenize.TokenError:
    pass

Я получаюследующее сообщение об ошибке

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

1 Ответ

3 голосов
/ 03 августа 2010

Обратите внимание, что в вашем сообщении об ошибке написано tokenize.TokenError.Это тип Exception, который поднимает ваш код.Чтобы поймать ошибку, вы используете блок try...except.Чтобы пропустить ошибку, просто поместите pass в блок except.

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