python - 在最后一个元音后查找单词

标签 python python-3.x

我目前正在尝试根据 CMU 发音词典生成与输入词押韵的单词列表 我已经设法将所有单词排列到字典中,它们的键是表示它们值的字符串列表。但是,由于基于最后一个元音的押韵,我有点难以找到如何处理包含多个单词的单词

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'}  

但是我想不出方法来应对变长和多元音。

感谢您的帮助!

最佳答案

查找最后一个元音需要您有一组元音。之后,您只需向后遍历列表即可。

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/

关于python - 在最后一个元音后查找单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54729781/

相关文章:

python - 在python中从父类文件调用子类方法

python - 如何在 Python 中读取 .xz 文件?

python-3.x - 有没有一种有效的方法来过滤列表中的最大数字

python - 如何在 Python 中指定(什么)的方法返回类型列表?

python - 具有动态宽度列的 QML TableView

python - 使用 lxml 和 iterparse() 解析一个大的 (+- 1Gb) XML 文件

python - Pyodbc 连接到 Oracle

Python:同时遍历字典中的所有列表以过滤掉元素

python - 如何通过键列表导航字典?

python - Python3 : creating error for input of negative