项目地址: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即可。