首页 > 解决方案 > 在最后一个元音之后查找单词

问题描述

我目前正在尝试根据 CMU Pronouncing 字典生成与输入单词押韵的单词列表,我已设法将所有单词排列到字典中,其键是表示其值的字符串列表。但是,由于基于最后一个元音的押韵,我有点坚持寻找在包含多个单词的情况下如何解决这个问题

def dotheyrhyme(filename,word):
    rhymes = {}
    list = []
    with open(filename) as f:
        text = f.readlines()[56:]
        for line in text:
            splitline = line.split("  ")
            rhymes[str(splitline[0])] = "".join(splitline[1:])
        f.close()
    comparer = rhymes[word.upper()].rstrip().split(" ")
    return comparer

我计划使用比较器变量作为基线,并相信反转这个变量也可能是一个很好的方法,但我迷失或过度思考比较最后一个元音和后面的字母是否相同并相应附加的方法?

例子:

{SECOND: 'S' 'EH1' 'K' 'AH0' 'N' 'D'} 

会押韵

{'AND': 'AH0' 'N' 'D'} 

但这两个不会押韵

{'YELLOW': 'Y' 'EH1' 'L' 'OW0'}

{HELLO: 'HH' 'AH0' 'L' 'OW1'}  

但是我想不出对付不同长度和多个元音的方法。

谢谢你的帮助!

标签: pythonpython-3.x

解决方案


找到最后一个元音需要你有一组元音。之后,您只需向后迭代列表。

vowels = {...} # some list of vowels
word = ['S', 'EH1', 'K', 'AH0', 'N', 'D']

for i in word[::-1]:
    if i in vowels:
        last_vowel = i
        break

如果对其他想法持开放态度,您还可以查看为您找到押韵的这个库:https ://pypi.org/project/pronouncing/


推荐阅读