13

非常に大きな文字列が与えられました。次のようなループで文字列の一部を処理したいと思います。

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

これを行うための素晴らしく効率的な方法は何ですか?

4

4 に答える 4

14

文字列をStringIOorBytesIOで囲み、ファイルのふりをすることができます。それはかなり速いはずです。

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 に答える