Python 库为文本着色,这是代码?

问题描述 投票:0回答:1

我正在构建聊天,但不是基于网络,而是基于Python。 在聊天中您与 AI API 交换信息。 我想知道是否有库可以识别这是代码文本并用正确的颜色对其进行着色,因为现在我做了一些手动工作,但它看起来很糟糕。

class PythonHighlighter(QSyntaxHighlighter):
    def __init__(self, parent=None):
        super().__init__(parent)
        self._highlight_rules = []

        # Keyword format
        keyword_format = QTextCharFormat()
        keyword_format.setForeground(QColor("blue"))
        keyword_format.setFontWeight(QFont.Bold)
        keywords = ["False", "await", "else", "import", "pass", "None", "break", "except", "in", "raise", "True", "class", "finally", "is", "return", "and", "continue", "for", "lambda", "try", "as", "def","from","nonlocal","while","assert","del","global","not","with","async","elif","if","or","yield","print","range","open","self"]
        self._highlight_rules.append((QRegExp(r"\b" + "|".join(keywords) + r"\b"), keyword_format))

        # String format
        string_format = QTextCharFormat()
        string_format.setForeground(QColor("green"))
        self._highlight_rules.append((QRegExp(r"\".*\""), string_format))
        self._highlight_rules.append((QRegExp(r"\'.*\'"), string_format))

        # Comment format
        comment_format = QTextCharFormat()
        comment_format.setForeground(QColor("gray"))
        self._highlight_rules.append((QRegExp(r"#[^\n]*"), comment_format))

    def highlightBlock(self, text):
        for pattern, format in self._highlight_rules:
            expression = QRegExp(pattern)
            index = expression.indexIn(text)
            while index >= 0:
                length = expression.matchedLength()
                self.setFormat(index, length, format)
                index = expression.indexIn(text, index + length)
python text formatting
1个回答
0
投票

看看Pygments也许这就足够了。

© www.soinside.com 2019 - 2024. All rights reserved.