非常に大きな文字列が与えられます。次のようなループで文字列の一部を処理したいと思います。
large_string = "foobar..."
while large_string:
process(large_string.pop(200))
これを行うための優れた効率的な方法は何ですか?
文字列を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
文字列をリストに変換できます。 list(string)
そしてそれをポップするか、リストをスライスするチャンクで繰り返すことができます[]
または、文字列をそのままスライスして、チャンクで繰り返すことができます
これは スライス で行うことができます:
large_string = "foobar..."
while large_string:
process(large_string[-200:])
large_string = large_string[:-200]
Dm03514の回答をフォローアップするには、次のようにします。
output = ""
ex = "hello"
exList = list(ex)
exList.pop(2)
for letter in exList:
output += letter
print output # Prints 'helo'