【问题标题】:How to handle tokenization errors?如何处理标记化错误?
【发布时间】:2010-08-03 18:00:06
【问题描述】:

请在下面找到我用来标记字符串的代码。

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))

我希望忽略此类错误并能够完成标记化过程。我有很多数据,所以我可以将部分数据丢失给这些错误。但是,我不确定如何编写能够实现所需功能的代码。有人可以帮我写代码吗?

谢谢。

编辑1:-

试一试

except tokenize.TokenError:
    pass

我收到以下错误消息

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

【问题讨论】:

    标签: python tokenize stringio


    【解决方案1】:

    请注意,您的错误消息显示为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
    

    【讨论】:

    • 抱歉,它成功了。我没有导入 tokenize 模块。感谢您的帮助。
    • 对了。我错过了您使用的是generate_tokens 而不是tokenize.generate_tokens。因此,我尽量避免使用裸名:stackoverflow.com/questions/1744258/…
    猜你喜欢
    • 2018-11-03
    • 2010-09-12
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    相关资源
    最近更新 更多