交换机配置变更检测之处理more字符串

项目地址:https://gitee.com/gsls200808/Switch-Configuration-Backup-and-Change-Detection

之前用这个做对比的时候会把more加入进来进行对比,但是有变更之后会有对比more的代码,显示不是很直观,

研究了下怎么删掉里面的more字符串

有下面几种

华为交换机型\x1b[42D

  ---- More ----[42D                                          [42D 

思科防火墙型 多空格型

<--- More --->
              

思科交换机 多退格字符型

 --More--         

思科无线控制器型 带quit

--More-- or (q)uit

1.首先想到的是正则, 但是正则是无法匹配控制字符 如 退格字符 \x1b字符

2.index find查找,这个满足需求,决定用这个,核心代码如下

def strdelsub(str,num1,num2):
    return str[:num1] + str[num2+1:];

def strdelmore(str):
    template1 = ['\r\n', '\x1b[42D', '\x1b[42D']
    template2 = ['\r\n', '--->\r', '    \r']
    template3 = ['\r\n', '\x08\x08\x08\x08\x08\x08\x08\x08\x08', '\x08\x08\x08\x08\x08\x08\x08\x08\x08']
    template4 = ['\n', '\r\n', '(q)uit\r\n']
    template=[template1,template2,template3,template4]
    for item in template:
        #print item
        if (str.find(item[2]) >= 0 and str.find(item[1]) >= 0):
            while len(str) > 0 and str.find(item[2]) >= 0:
                index1 = str.rfind(item[2], 0, len(str))
                index2 = str.rfind(item[1], 0, index1)
                index3 = str.rfind(item[0], 0, index2)
                str = strdelsub(str, index3 + len(item[0]), index1 + len(item[2]) - 1)
            return str
    return str

通过以上代码就把more字符串去除了,如果以后来了新的交换机,新的more字符串,加到template即可。

 

 

你可能感兴趣的:(分享学习,交换机)