控制台的输出在存储到数据库之后出现了ANSI颜色代码。这些颜色代码通常是由控制台日志库添加的,用于在支持ANSI颜色代码的终端中显示彩色文本。例如:
[95m6 [0m | [95m0.6376 [0m | [95m0.0 [0m | [95m289.2 [0m |
在上面的字符串中,序列[95m和[0m是用于改变文本颜色的ANSI转义序列。[95m通常表示亮粉色文本,而[0m表示重置文本颜色到默认值。
要解决这个问题,您需要在存储到数据库之前去除这些ANSI颜色代码。Python中可以通过正则表达式的方式来做到这一点:
import re
def remove_color_codes(text):
# ANSI颜色代码的正则表达式
ansi_escape = re.compile(r'\x1B\[[0-?]*[ -/]*[@-~]')
return ansi_escape.sub('', text)
示例使用
log_text = "这里是包含ANSI颜色代码的日志���本"
clean_text = remove_color_codes(log_text)
然后把clean_text存入数据库
在上面的函数中,remove_ansi_color_codes会使用正则表达式匹配和去除所有的ANSI转义序列。
将处理过的无颜色代码的文本clean_text存入数据库,这样就应该不会出现之前的乱码问题了。
请确保这个清理步骤是在数据写入数据库之前完成的,并且任何处理日志数据的代码都使用了这个清理步骤。如果多条数据需要处理,可以在批量数据提交前,循环遍历每条日志记录并进行清理。