Python如何在StringIO缓冲区中搜索替换?

0 投票
2 回答
4252 浏览
提问于 2025-04-17 06:45

我正在使用 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)

撰写回答