相当于弹出字符串

Mar*_*cka 10 python string string-parsing

给出一个非常大的字符串.我想在循环中处理部分字符串,如下所示:

large_string = "foobar..."
while large_string:
    process(large_string.pop(200))
Run Code Online (Sandbox Code Playgroud)

这样做的有效方式是什么?

Fre*_*Foo 14

您可以将字符串包装在一个StringIO或中,BytesIO并假装它是一个文件.那应该很快.

from cStringIO import StringIO
# or, in Py3/Py2.6+:
#from io import BytesIO, StringIO

s = StringIO(large_string)
while True:
    chunk = s.read(200)
    if len(chunk) > 0:
        process(chunk)
    if len(chunk) < 200:
        break
Run Code Online (Sandbox Code Playgroud)

  • 打败我6秒. (2认同)
  • @larsmans:或者,你可以使用缓冲区的seek方法来读取最后的_n_字节:`s.seek(-200,2); chunk = s.read()`... (2认同)
  • 对于`io.StringIO`你不需要Py3 - 它存在于2.6中. (2认同)

dm0*_*514 9

您可以将字符串转换为列表.list(string)并弹出它,或者您可以迭代切片列表的块,[]或者您可以按字符串切片并迭代块