如何用StringIO
中的另一个字符串替换一个字符串?-我听说如果长度相同的话是有可能的。在
尝试:
from cStringIO import StringIO
c = 'can\nhaz\nfoo'
sio = StringIO(c)
for line in sio:
if line == 'haz\n':
# sio.write('bar\n')
line = 'bar\n'
break
sio.seek(0)
sio.readlines() # [ 'can\n', 'haz\n', 'bar' ]
PS:目前正在用C语言开发一个解决方案,但更愿意让它发挥作用。在
StringIO
尝试以读/写方式模拟常规文件,但它存储在内存中。在尝试在位编辑文本文件时,您会遇到与常规文件相同的问题(替换为较长的字符串会覆盖以下行)。你也有同样的选择。在其他小的更改:
cStringIO
在开始时使用默认字符串创建是不可写的。但是您可以通过创建一个空对象并对其进行写入来解决这个问题(显然现在您可以访问write
方法)你要找的是:
它在lineread之前存储偏移量,如果找到模式,它将返回到上一个偏移量,并写入相同数量的字节
如果您想使用
^{pr2}$cStringIO
的话,这是一个残酷的解决方案:您可以完全读取缓冲区,执行替换,然后写回它(允许用更长的字符串替换),但是读取整个缓冲区,这可能不是您想要的:注意python3删除了这些对象,现在它只是
io
。因此,依赖这样或那样的实现将使您的代码不可移植。在相关问题 更多 >
编程相关推荐