擅长:python、mysql、java
<p>你可以用str.translate公司比较长度。如果删除字母后长度差大于1,则至少有两个元音:</p>
<pre><code>with open("FirstMondayArticle.html") as f, open("twoVoweledWordList.txt", "w") as out:
for line in file:
for word in line.split():
if len(word) - len(word.lower().translate(None,"aeiou")) > 1:
out.write("{}\n".format(word.rstrip()))
</code></pre>
<p>在您自己的代码中,您总是编写单词,因为<code>text_file.write('\n' + word)</code>在if块之外。关于为什么不应在一行上有多个语句的一个很好的教训,您的代码相当于:</p>
<pre><code> if twovowels.match(word):
print(word)
text_file.write('\n' + word) # <- outside the if
</code></pre>
<p>使用if的代码位于正确的位置,对命名约定进行了一些更改,在赋值之间添加了一些空格,并使用<code>with</code>为您关闭文件:</p>
<pre><code>import re
with open("FirstMondayArticle.html") as f, open("twoVoweledWordList.txt", "w") as out:
two_vowels = re.compile(r".*[aeiou].*[aeiou].*", re.I)
non_word = re.compile(r"\W+", re.U)
for line in f:
for word in non_word.split(line):
if two_vowels.match(word):
print(word)
out.write("{}\n".format(word.rstrip()))
</code></pre>