首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >except忽略除

except忽略除
EN

Stack Overflow用户
提问于 2015-10-05 08:37:08
回答 2查看 994关注 0票数 1

我有一个文件,其中pythonStyleComments在行中,例如:

代码语言:javascript
复制
def foo(): # declare
    # Simple function
    a = 0 # TODO: add random
    return a

因此,我想将.ignore(pythonStyleComments)添加到.ignore解析中,但希望处理任何元(如TODO:)。我知道所有的元单词,所以我如何才能排除这些评论忽略?

也许可以声明注释为'#‘+ Regex(),其中Regex将被排除元单词?还是吡喃解析有更优雅的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-06 08:30:07

我刚刚宣布comment = Literal('#').suppress() + Optional(restOfLine)

然后将其作为可选的(注释)添加到每个语句的末尾,在其中它可能会出现。然后添加

代码语言:javascript
复制
def commentHandler(t):
    result = []
    if "fixed" in t[0]:
        result.append("fixed")
    if "TODO: " in t[0]:
        try:
            message = t[0].split("TODO: ")[1].strip()
            result.append(message)
        except Exception as e:
            result.append(t[0])
    return result

comment.setParseAction(commentHandler)

所以它对我来说是完美的。

票数 0
EN

Stack Overflow用户

发布于 2015-10-05 14:01:53

我建议用多次传球来处理这件事。首先,为TODO注释定义一个模式,并使用scanString定位所有这些实例。然后对解析器进行第二次传递,并将TODO与您定位的元素的位置匹配起来。

或者(这是完全未经测试的),尝试将一个解析操作附加到pythonStyleComment,然后按照通常的方式执行并调用parser.ignore(pythonStyleComment)。如果一个是匹配的,如果它与您的TODO格式相匹配,那么将关于该注释及其位置的内容保存到旁边。(我不确定被忽略的表达式会运行它们的解析操作,所以您可能不得不使用2-pass方法。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32944298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档