使用Pygments

时间:2018-05-23 12:45:06

标签: python oop lexer pygments

我正在使用Pygments库的guess_lexer()方法来识别代码段中的源代码:

这就是我现在正在使用它的方式:

from pygments.lexers import guess_lexer
text = "string containing source code"
lexer_subclass = guess_lexer(text)
print str(lexer_subclass)

根据text变量中的语言,它将返回如下内容:

<pygments.lexers.PythonLexer>

我想要的只是PythonLexer部分。我知道我可以使用字符串操作来获取它,但它感觉很hacky。我想以正确的方式进行。

所以我试着看看Pygment在内部做了什么,并找到负责输出词法分析器名称的this method

def __repr__(self):
    if self.options:
        return '<pygments.lexers.%s with %r>' % (self.__class__.__name__,
                                                 self.options)
    else:
        return '<pygments.lexers.%s>' % self.__class__.__name__

果然,如果我修改它只返回self.__class__.__name__,我会得到我想要的,但感觉不对。

我怎样才能得到我想要的东西?也许继承类然后重写函数或什么?任何想法将不胜感激。

1 个答案:

答案 0 :(得分:0)

事实证明解决方案很简单。我只需要使用以下内容:

guess_lexer(text).name