Python如何在StringIO缓冲区中搜索替换?
我正在使用 telnetlib 来获取几行文本(tn = telnetlib)。
o = cStringIO.StringIO(tn.read_all())
# this prints the entire text as it should (a few lines)
print o.getvalue()
o.close()
现在,有没有办法在 cStringIO 缓冲区中根据一个字符串进行搜索,如果找到这个字符串,就替换掉整行呢?我之前是在磁盘上的文件里做这个,但那样不太方便。代码很乱,而且需要很多临时文件,我需要进行很多次搜索和替换操作。
2 个回答
1
在字符串上进行搜索和替换操作,然后如果需要的话,把结果放到StringIO
缓冲区中:
lines = tn.read_all().splitlines()
for i, line in enumerate(lines):
if search_string in line:
lines[i] = replacement_string
o = cStringIO.StringIO("\n".join(lines))
1
这是对 @Sven Marnach 的回答的一个小改动:
from cStringIO import StringIO
lines = tn.read_all().splitlines(True) # keep \n
o = StringIO()
for line in lines:
if search_string in line:
line = replacement_string # or line = line.replace(search_string, new_string)
o.write(line)