擅长:python、mysql、java
<p>我不知道你说的“然后再由解析器”是什么意思。拆分完成后,不再遍历<em>字符串</em>,只遍历被拆分字符串的<em>列表</em>。这可能是实现这一点的最快方法,只要字符串的大小不是非常大。python使用不可变字符串的事实意味着您必须始终创建一个新字符串,因此无论如何这必须在某个时刻完成。</p>
<p>如果字符串非常大,缺点是内存使用:同时在内存中有原始字符串和拆分字符串列表,所需的内存将增加一倍。迭代器方法可以帮您节省这一点,根据需要构建一个字符串,尽管它仍然要支付“拆分”的代价。但是,如果字符串太大,则通常要避免内存中包含未拆分的字符串。最好只是从文件中读取字符串,它已经允许您以行的形式遍历它。</p>
<p>但是,如果内存中已经有一个巨大的字符串,一种方法是使用StringIO,它为字符串提供类似文件的接口,包括允许按行迭代(内部使用.find查找下一个换行符)。然后你得到:</p>
<pre><code>import StringIO
s = StringIO.StringIO(myString)
for line in s:
do_something_with(line)
</code></pre>