13

给定一个非常大的字符串。我想在这样的循环中处理部分字符串:

large_string = "foobar..."
while large_string:
    process(large_string.pop(200))

什么是这样做的好而有效的方法?

4

4 回答 4

14

您可以将字符串包装在 a StringIOor中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
于 2012-06-15T12:29:31.387 回答
12

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

于 2012-06-15T12:26:40.593 回答
2

你可以用切片来做到这一点:

large_string = "foobar..."
while large_string:
    process(large_string[-200:])
    large_string = large_string[:-200]
于 2012-06-15T12:29:26.727 回答
1

要跟进 dm03514 的回答,您可以执行以下操作:

output = ""
ex = "hello"
exList = list(ex)
exList.pop(2)
for letter in exList:
    output += letter

print output # Prints 'helo'
于 2018-11-26T22:25:40.360 回答