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

Python脚本日志字符串长度异常与匹配失败问题排查

问题诊断与解决方案

核心原因:隐藏的ANSI终端控制字符

你遇到的长度不符、匹配失败问题,本质是从终端获取的日志内容里包含了ANSI控制字符——这些是用来给文本设置颜色(比如你看到的红色部分)、格式的隐藏字符,它们不会在终端显示,但会被算入字符串的实际长度中,导致视觉上内容一致,但实际字符串包含额外的不可见代码,所以==匹配始终返回False。

解决步骤:移除ANSI控制字符

我们可以用正则表达式精准匹配并移除所有ANSI控制字符,只保留可见的文本内容。具体操作如下:

  1. 导入正则模块:在脚本开头添加import re
  2. 编写移除控制字符的工具函数:
def remove_ansi_escape_codes(s):
    # 正则匹配所有ANSI escape序列
    ansi_pattern = re.compile(r'\x1B(?:[@-Z\\-_]|\[.*?[a-zA-Z])')
    return ansi_pattern.sub('', s)
  1. 处理获取到的日志字符串:在你提取Cmd_Out1a之后,调用这个函数清理内容:
Cmd_Out1a = Cmd.before
Cmd_Out1a = Cmd_Out1a.splitlines()[-3]
# 清理ANSI控制字符
Cmd_Out1a = remove_ansi_escape_codes(Cmd_Out1a)

修改后的完整代码

from pexpect import pxssh
import pexpect
import time
import re

def remove_ansi_escape_codes(s):
    ansi_pattern = re.compile(r'\x1B(?:[@-Z\\-_]|\[.*?[a-zA-Z])')
    return ansi_pattern.sub('', s)

def Login_Server(hostip,user,passwd):
    User_Info_out = []
    Cmd_Out = ' '
    try:
        Cmd = pxssh.pxssh()
        Cmd.login(hostip, user, passwd)
        Cmd_Out = Execute_Script4(Cmd)
    except pxssh.ExceptionPxssh as e:
        User_Info_out = 'None'
    return User_Info_out,Cmd_Out

def Execute_Script4(Cmd):
    Cmd_Out1a,Cmd_Out_str1,Cmd_Out1b = " ", " ", " "
    sub_str1 = "abc-xyz: Attach Complete is about to be sent for jk 2"
    Cmd.sendline('sudo su')
    Cmd.prompt()
    Cmd.sendline('log command')
    time.sleep(3)
    Cmd.sendcontrol('c')
    Cmd.prompt()
    Cmd_Out1a = Cmd.before
    Cmd_Out1a = Cmd_Out1a.splitlines()[-3]
    # 清理控制字符
    Cmd_Out1a = remove_ansi_escape_codes(Cmd_Out1a)
    print(Cmd_Out1a)
    print(type(Cmd_Out1a))
    print(len(Cmd_Out1a))
    print(len(sub_str1))
    # 现在可以正常验证匹配了
    print("匹配结果:", Cmd_Out1a == sub_str1)

Login_Server('XXX.XXX.X.XX','usera','password')

为什么之前的方法没用?

  • rstrip()只能移除字符串末尾的空白字符(空格、换行、制表符),但ANSI控制字符可能插在文本中间(比如颜色切换的代码),所以无法清理干净。
  • 切片操作异常是因为控制字符打乱了实际字符索引,视觉上的字符位置和实际字符串的索引不对应,导致切片结果不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 16:22:49