利用pygments.lexersget_lexer_for_filename()函数快速识别文件格式并进行代码高亮显示
发布时间:2023-12-25 09:29:24
pygments是一个功能强大的代码高亮工具,它支持许多编程语言和文件格式的代码高亮显示。其中的get_lexer_for_filename()函数可以根据文件名快速识别文件格式,并返回对应的Lexer对象,从而实现代码的高亮显示。
使用get_lexer_for_filename()函数非常简单,只需要将文件名传递给该函数即可。下面是一个使用get_lexer_for_filename()函数的示例代码:
from pygments import lexers
# 定义一个文件名
filename = "test.py"
# 调用get_lexer_for_filename()函数来获取对应的Lexer对象
lexer = lexers.get_lexer_for_filename(filename)
# 定义一段代码
code = """
def hello_world():
print("Hello, world!")
"""
# 使用get_tokens()方法来获取代码的tokens
tokens = lexer.get_tokens(code)
# 遍历tokens并输出高亮显示的结果
for token in tokens:
print(token)
上面的代码中,首先导入了lexers模块,然后定义了一个文件名test.py,接下来调用get_lexer_for_filename()函数并将文件名传递给它,从而获取对应的Lexer对象。然后定义了一段代码,并使用get_tokens()方法来获取代码的tokens。最后,遍历tokens并输出高亮显示的结果。
执行上面的代码,你将会看到类似下面的输出结果:
Token.Keyword, 'def'
Token.Text, ' '
Token.Name.Function, 'hello_world'
Token.Punctuation, '('
Token.Punctuation, ')'
Token.Punctuation, ':'
Token.Text, '
'
Token.Keyword, 'print'
Token.Punctuation, '('
Token.String.Double, '"Hello, world!"'
Token.Punctuation, ')'
Token.Text, '
'
上面的结果是对代码进行了高亮显示后的token序列。每个token由两部分组成, 个部分是token的类型(如Token.Keyword、Token.Text等),第二个部分是token的内容。
通过使用pygments.lexers.get_lexer_for_filename()函数,你可以非常方便地根据文件名来识别文件格式,并进行代码高亮显示。这在编写各种代码编辑器、语法高亮插件等场景下非常有用。
