使用 Pygments 检测代码片段的编程语言
Posted
技术标签:
【中文标题】使用 Pygments 检测代码片段的编程语言【英文标题】:Detect programming language of a snippet using Pygments 【发布时间】:2018-05-23 12:45:06 【问题描述】:我正在使用 Pygments 库的guess_lexer()
方法来识别 sn-p 中的源代码:
这就是我现在使用它的方式:
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】:原来解决方案很简单。我只需要使用以下内容:
guess_lexer(text).name
【讨论】:
以上是关于使用 Pygments 检测代码片段的编程语言的主要内容,如果未能解决你的问题,请参考以下文章
我应该将 Pygments 与 Scala 应用程序一起使用吗?
如何使用模块化代码片段中的LeakCanary检测内存泄漏?
使用 Pygments 在 Jekyll 中突出显示围栏代码块
如何使用 docutils 和 pygments 控制短/长标签名称?