相当于弹出字符串

时间:2012-06-15 12:24:41

标签: python string pop

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

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

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

4 个答案:

答案 0 :(得分:13)

您可以将字符串包装在StringIOBytesIO中并假装它是一个文件。那应该很快。

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

答案 1 :(得分:8)

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

答案 2 :(得分:3)

您可以使用slicing执行此操作:

large_string = "foobar..."
while large_string:
    process(large_string[-200:])
    large_string = large_string[:-200]

答案 3 :(得分:0)

要跟踪dm03514的答案,您可以执行以下操作:

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

print output # Prints 'helo'
相关问题