<p>两个问题:在对列表进行迭代时修改列表,并且<code>.index</code>只找到第一项</p>
<p>下面查找所有要删除的位置,然后按相反顺序删除它们,以便索引不会指向错误的元素,如果在正向方向删除,则会发生这种情况:</p>
<pre><code>Corps2 = ['Debut', '\n', '\n', 'Note', ' ', '<-', ' ', 'Saisie()', ' ', '', '\n', '\n', 'Selon que\n', ' ', 'Note', ' ', '≥', ' ', '16', ' ', '', ' ', '', ' ', ':', ' ', '', '\n', '\n', 'Ecrire', ' ', "('TB')", '\n', '\n', '', ' ', 'Note', ' ', '≥', ' ', '14', ' ', '', ' ', '', ' ', ':', ' ', '', '\n', '\n', 'Ecrire', ' ', "('B')", '\n', '\n', '', ' ', 'Note', ' ', '≥', ' ', '12', ' ', '', ' ', '', ' ', ':', ' ', '', '\n', '\n', 'Ecrire', ' ', "('AB')", '\n', '\n', '', ' ', 'Note', ' ', '≥', ' ', '10', ' ', '', ' ', '', ' ', ':', ' ', '', '\n', '\n', 'Ecrire', ' ', "('Passable')", '\n', '\n', 'Sinon', ' ', ':', ' ', 'Ecrire', ' ', "('Redoublant')", '\n', '\n', 'Fin_Si']
to_delete = [i for i,v in enumerate(Corps2) if v == 'Ecrire']
for i in reversed(to_delete):
del Corps2[i-1]
</code></pre>
<p>注意:如果在对字符串进行标记化之前对其进行处理,则可以首先执行<code>.replace('\nEcrire','Ecrire')</code></p>
<p>仅供参考,元素<code>'≥'</code>表示字符串解码错误:</p>
<pre><code>>>> '≥'.encode('cp1252').decode('utf8')
'≥'
</code></pre>