def __processReadLine(self, line_p):
'''
remove non-printable characters from line <line_p>
return a printable string.
'''
line, i, imax = '', 0, len(line_p)
while i < imax:
ac = ord(line_p[i])
if (32<=ac<127) or ac in (9,10): # printable, \t, \n
line += line_p[i]
elif ac == 27: # remove coded sequences
i += 1
while i<imax and line_p[i].lower() not in 'abcdhsujkm':
i += 1
elif ac == 8 or (ac==13 and line and line[-1] == ' '): # backspace or EOL spacing
if line:
line = line[:-1]
i += 1
return line
VT100代码已经(主要)按照类似模式分组:
http://ascii-table.com/ansi-escape-sequences-vt-100.php
我认为最简单的方法是使用诸如regexbuddy这样的工具为每个VT100代码组定义一个regex。在
我找到了以下解决方案来成功解析vt100颜色代码并删除不可打印的转义序列。找到的代码段here在使用telnetlib运行telnet会话时成功删除了所有代码:
转义序列的组合表达式可以是类似这样的通用表达式:
应与
re.I
一起使用这包括:
\x1b
,后跟@
到_
范围内的字符。在\x9b
,而不是\x1b + "["
。在但是,对于定义键映射或以引号括起来的字符串的序列,这将不起作用。在
相关问题 更多 >
编程相关推荐