You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python的input()函数中使用ANSI转义颜色代码?

解决input()中解析ANSI颜色代码的问题

核心原因

input()会直接读取用户输入的原始字符串,不会自动解析Python变量或表达式。所以你输入red+'test'+reset时,它只会被当作普通字符串存储;直接输入ANSI代码时,反斜杠会被转义,导致控制字符无法生效。

解决方案1:自定义占位符替换(安全推荐)

通过定义颜色标记(比如{red}),让用户输入带标记的文本,再替换为对应的ANSI代码。这种方法安全且易维护。

# 定义颜色映射字典
color_map = {
    'red': '\x1b[91m',
    'yellow': '\x1b[93m',
    'blue': '\x1b[94m',
    'reset': '\x1b[0m'
}

# 获取用户输入(示例输入:"The {yellow}sun{reset} is bright in the {blue}sky{reset} today.")
user_input = input("输入带颜色标记的文本: ")

# 替换标记为ANSI代码
colored_str = user_input.format(**color_map)

# 存入字典
color_data = {'content': colored_str}

# 测试输出(终端会显示带颜色的文本)
print(color_data['content'])

解决方案2:使用eval解析表达式(仅限自用场景)

如果你需要支持red+'test'+reset这类Python表达式写法,可以用eval解析,但绝对不要用于处理不可信输入(会执行任意代码,存在安全风险)。

# 定义颜色变量
red = '\x1b[91m'
yellow = '\x1b[93m'
blue = '\x1b[94m'
reset = '\x1b[0m'

# 获取用户输入(示例输入:"red+'test'+reset")
user_input = input("输入颜色拼接表达式: ")

try:
    # 解析表达式
    colored_str = eval(user_input)
    color_data = {'content': colored_str}
    print(color_data['content'])
except Exception as e:
    print(f"解析失败: {str(e)}")

解决方案3:解析直接输入的ANSI代码

如果用户直接输入\x1b[91mtest\x1b[0m这类ANSI代码字符串,可以用ast.literal_eval将转义的反斜杠转换为实际控制字符:

import ast

user_input = input("输入ANSI代码文本: ")
try:
    # 转换为带转义字符的字符串
    colored_str = ast.literal_eval(f'"{user_input}"')
    color_data = {'content': colored_str}
    print(color_data['content'])
except Exception as e:
    print(f"解析失败: {str(e)}")

内容的提问来源于stack exchange,提问作者Tristan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:37:13