非常に大きな文字列が与えられました。次のようなループで文字列の一部を処理したいと思います。
large_string = "foobar..."
while large_string:
process(large_string.pop(200))
これを行うための素晴らしく効率的な方法は何ですか?
非常に大きな文字列が与えられました。次のようなループで文字列の一部を処理したいと思います。
large_string = "foobar..."
while large_string:
process(large_string.pop(200))
これを行うための素晴らしく効率的な方法は何ですか?
文字列をStringIO
orBytesIO
で囲み、ファイルのふりをすることができます。それはかなり速いはずです。
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
文字列をリストに変換できます。list(string)
それをポップするか、リストをスライスしてチャンクで反復する[]
か、文字列をそのままスライスしてチャンクで反復することができます
スライスでこれを行うことができます:
large_string = "foobar..."
while large_string:
process(large_string[-200:])
large_string = large_string[:-200]