擅长:python、mysql、java
<blockquote>
<p>if I print <code>fileContents</code> after this function there are no changes to the list.</p>
</blockquote>
<p>实际上,有变化,但最多添加一个(最后一个)</p>
<p>这是因为您没有对<code>i</code>应用相同的更改,这意味着下一个<code>if</code>块将把一个部分从<code>i</code>复制回<code>fileContents[count]</code>上一个<em>更改没有的部分</p>
<p>快速修复方法是确保将更改<em>也</em>应用到<code>i</code>。比如:</p>
<pre><code>fileContents[count] = i = i[:indexOfI+1] + "+" + i[indexOfI+1:]
# ^^^^
</code></pre>
<p>您可以使用<code>re.sub</code>执行列表理解任务:</p>
<pre><code>import re
fileContents = [re.sub(r"([XYIJ])(?=\d)", r"\1+", line) for line in fileContents]
</code></pre>
<p>这将匹配任何后跟数字的X、Y、I或J。在这种情况下,将在这些值之间插入一个加号。如果需要更严格的匹配规则,其中行必须以“G”、…等开头,那么正则表达式将变得更复杂</p>