gpt4 book ai didi

Python:将 ANSI 颜色代码转换为 HTML

转载 作者:行者123 更新时间:2023-11-28 01:52:32 24 4
gpt4 key购买 nike

我有一个程序可以读取 Minecraft 控制台输出,并将其放入 Qt 文本编辑字段(无关)。但是,Minecraft 控制台使用 ANSI 颜色代码 ( [0;32;1m ) 来输出颜色,我希望它们采用 HTML 格式(因为 Qt 文本编辑字段读取该格式)。

我研究了一下,发现了一堆需要样式表的解决方案,这不是我想要的。我想要的是一个简单的 <span style="color: green"></span>或类似的,内联的。

谁能帮我实现这个目标?

最佳答案

import re

COLOR_DICT = {
'31': [(255, 0, 0), (128, 0, 0)],
'32': [(0, 255, 0), (0, 128, 0)],
'33': [(255, 255, 0), (128, 128, 0)],
'34': [(0, 0, 255), (0, 0, 128)],
'35': [(255, 0, 255), (128, 0, 128)],
'36': [(0, 255, 255), (0, 128, 128)],
}

COLOR_REGEX = re.compile(r'\[(?P<arg_1>\d+)(;(?P<arg_2>\d+)(;(?P<arg_3>\d+))?)?m')

BOLD_TEMPLATE = '<span style="color: rgb{}; font-weight: bolder">'
LIGHT_TEMPLATE = '<span style="color: rgb{}">'


def ansi_to_html(text):
text = text.replace('[m', '</span>')

def single_sub(match):
argsdict = match.groupdict()
if argsdict['arg_3'] is None:
if argsdict['arg_2'] is None:
color, bold = argsdict['arg_1'], 0
else:
color, bold = argsdict['arg_1'], int(argsdict['arg_2'])
else:
color, bold = argsdict['arg_2'], int(argsdict['arg_3'])

if bold:
return BOLD_TEMPLATE.format(COLOR_DICT[color][1])
return LIGHT_TEMPLATE.format(COLOR_DICT[color][0])

return COLOR_REGEX.sub(single_sub, text)

print ansi_to_html('[06-10-13 21:28:23] [INFO] [0;31;1mUsage: /kick [reason ...][m')
print ansi_to_html('[06-10-13 21:28:23] [INFO] [31;0mUsage: /kick [reason ...][m')
print ansi_to_html('[06-10-13 21:28:23] [INFO] [31mUsage: /kick [reason ...][m')

[06-10-13 21:28:23] [INFO] <span style="color: rgb(128, 0, 0); font-weight: bolder">Usage: /kick [reason ...]</span>
[06-10-13 21:28:23] [INFO] <span style="color: rgb(255, 0, 0)">Usage: /kick [reason ...]</span>
[06-10-13 21:28:23] [INFO] <span style="color: rgb(255, 0, 0)">Usage: /kick [reason ...]</span>

关于Python:将 ANSI 颜色代码转换为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19212665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com