我目前正在尝试根据 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/