2010-08-03 108 views
1

请在下面找到我用来标记字符串的代码片段。如何处理令牌化错误?

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

我希望忽略这样的错误,并能够完成标记化进程。我有很多数据,所以我可以放弃部分数据来处理这些错误。但是,我不确定如何编写能够实现所需功能的代码段。请问有人能帮我解决这个问题吗?

谢谢。在尝试

except tokenize.TokenError: 
    pass 

我收到以下错误消息

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

回答

3

注意到你的错误消息指出tokenize.TokenError

- :

EDIT1。这是您的代码正在提高的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 
+0

我试过了。它不起作用。 – 2010-08-03 18:11:28

+0

对不起,它工作。我没有导入tokenize模块。谢谢你的帮助。 – 2010-08-03 18:19:09

+1

啊对。我错过了你使用'generate_tokens'而不是'tokenize.generate_tokens'。我尝试避免因为这个裸号:http://stackoverflow.com/questions/1744258/is-import-module-better-coding-style-than-from-module-import-function – unutbu 2010-08-03 18:34:47