给出一个非常大的字符串。我想像这样循环处理字符串的一部分:
large_string = "foobar..."
while large_string:
process(large_string.pop(200))
这样做的有效方法是什么?
答案 0 :(得分:13)
您可以将字符串包装在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
答案 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'