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

Python实现数组中多字符分不同颜色高亮显示的问题

解决方案

你的问题核心是替换操作的顺序和拼接方式错误——用加号会把两次独立替换后的文本拼接在一起,导致输出重复,而非在同一文本上完成两次替换。同时你的代码存在缩进错误,这也会导致运行报错。

修改后的正确代码如下:

import time
from colorama import Fore

def highlight(text):
    # 链式调用replace:先替换1,再在结果基础上替换4
    replaced_text = text.replace("1", f"{Fore.GREEN}🔴{Fore.RESET}")
    replaced_text = replaced_text.replace("4", f"{Fore.YELLOW}🔴{Fore.RESET}")
    return replaced_text

i = 0

while i <= 10:
    time.sleep(3)
    with open(r'./serial_data/generations.txt', 'r') as file:
        data = file.read()
        text = highlight(data)
        print(text)
        i += 1

关键修改点:

  • 去掉return里的加号,改为链式替换:先对原始文本替换1,再将替换后的结果用来替换4,这样两次修改会作用在同一个文本上,最终得到同时替换1和4的结果。
  • 修正代码中的缩进错误:highlight函数内的代码缩进要统一,print和i += 1要和data = file.read()保持同一缩进层级(属于with代码块内)。
  • 用f-string替代format,让代码更简洁易读(可选,但推荐)。

为什么原来的写法不行?

你之前的return text.replace(...) + text.replace(...)相当于:

  1. 生成一个只替换了1的文本
  2. 生成一个只替换了4的文本
  3. 把这两个文本拼接起来输出,所以会看到重复的内容,而非同时修改的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:50:23