我正在尝试创建一个简单的拼字游戏求解程序,它可以在Python单词语料库词典中创建所有3个字母单词的列表。我已经阅读了在python中搜索正则表达式的内容,但是还没有能够为我的问题找到解决方案。
我是python的初学者,所以这可能是一个非常简单的修复或程序,但任何帮助将非常感激。
这是我的表达式,它意味着返回每个由字典中的元音组成的3个字母单词,但是它当前正在返回包含元音的字典中的每个单词!我觉得这可能与我的元字符有关,但我不确定。
vowels = [w for w in words if re.search('aeiou$', w)]
答案 0 :(得分:1)
存储仅由元音组成的所有3个字母的单词:
import re
words = ['asd', 'aei', 'a']
result = [w for w in words if re.match(r'[aeiou]{3}$', w)]
print(result)
[asd]
会匹配'a'
,'s'
或'd'
。 {3}
恰好与其中的3个相匹配。 match()
匹配字符串的开头。
或者,如果你想避免使用正则表达式:
results = []
for w in words:
if len(w) == 3:
for letter in w:
if letter not in 'aeiou':
break
else:
results.append(w)
如果找到非元音,for
会中断且未达到else:
,则不会存储该字。
答案 1 :(得分:0)
我使用锚点,添加也可以是元音的y
字母,以及[aeiouy]
字符类:
result = [w for w in words if re.match(r'^[aeiouy]{3}$', w)]
如果' y'正在产生不需要的结果,您可以从字符类中删除y
字母。
result = [w for w in words if re.match(r'^[aeiou]{3}$', w)]