擅长:python、mysql、java
<p>在你开始之前我假设你有这样的东西:</p>
<pre><code>file = "section_1;section_2;section_3;"
lengthOfFile = len(file)
contents = []
current = ""
fileIndex = 0
endFound = False
</code></pre>
<p>您编写的代码可以稍微澄清如下:</p>
^{pr2}$
<p>这个特殊情况下的问题是,当你到达<code>file</code>中的最后一个<code>;</code>,<code>fileIndex</code>是17,但是{<cd4>}是18。所以<code>fileIndex == lengthOfFile</code>测试失败。您可以通过将这一行更改为<code>fileIndex + 1 == lengthOfFile</code>,或者将增量操作移动到<code>if next_char == ';'</code>上方来修复上面的代码。在</p>
<p>但是有更简单的方法用Python编写这些代码。特别是,如果您的目标是使<code>contents</code>成为<code>file</code>中所有“section”条目的列表,则可以使用如下方法:</p>
<pre><code>contents = [part + ';' for part in file[:-1].split(';')]
</code></pre>
<p>(<code>[:-1]</code>在拆分前省略了<code>file</code>中的最后一个字符(<code>;</code>)。请注意,如果这是您想要的,那么您的原始代码也需要在每次传递期间重置<code>current</code>的值,如上所述。在</p>
<p>如果您真的希望<code>contents</code>从<code>file</code>的开头开始,将<code>contents</code>变成一个越来越长的子字符串的列表,您可以这样做:</p>
<pre><code>contents1 = file[:-1].split(';')
contents = []
for part in contents1:
current = current + part + ';'
contents.append(current)
</code></pre>