<p>其他答案告诉您为什么在更改列表时<code>for</code>跳过项。这个答案告诉您应该如何删除字符串中没有显式循环的字符。</p>
<p>使用<a href="http://docs.python.org/2/library/stdtypes.html#str.translate" rel="nofollow">^{<cd2>}</a>:</p>
<pre><code>vowels = 'aeiou'
vowels += vowels.upper()
text.translate(None, vowels)
</code></pre>
<p>这将删除第二个参数中列出的所有字符。</p>
<p>演示:</p>
<pre><code>>>> text = "Hey look Words!"
>>> vowels = 'aeiou'
>>> vowels += vowels.upper()
>>> text.translate(None, vowels)
'Hy lk Wrds!'
>>> text = 'The Quick Brown Fox Jumps Over The Lazy Fox'
>>> text.translate(None, vowels)
'Th Qck Brwn Fx Jmps vr Th Lzy Fx'
</code></pre>
<p>在Python 3中,<code>str.translate()</code>方法(Python 2:<code>unicode.translate()</code>)的不同之处在于它不接受<em>deletechars</em>参数;第一个参数是将Unicode序号(整数值)映射到新值的字典。对于需要删除的任何字符,请使用<code>None</code>:</p>
<pre><code># Python 3 code
vowels = 'aeiou'
vowels += vowels.upper()
vowels_table = dict.fromkeys(map(ord, vowels))
text.translate(vowels_table)
</code></pre>
<p>您还可以使用<a href="https://docs.python.org/3/library/stdtypes.html#str.maketrans" rel="nofollow">^{<cd6>} static method</a>生成该映射:</p>
<pre><code>vowels = 'aeiou'
vowels += vowels.upper()
text.translate(text.maketrans('', '', vowels))
</code></pre>