到目前为止,我有以下代码来计算cmudict(CMU发音字典)中单词中的音节数。它计算字典中所有单词的音节数。现在我需要将cmudict替换为我的输入文件,并找到文件中作为输出打印的每个单词的音节数。只是在读取模式下打开输入文件不起作用,因为dict()不能作为文件的属性提供。 代码如下:
from curses.ascii import isdigit from nltk.corpus import cmudict d = cmudict.dict() # get the CMU Pronouncing Dict def nsyl(word): """return the max syllable count in the case of multiple pronunciations""" return max([len([y for y in x if isdigit(y[-1])]) for x in d[word.lower()]]) w_words = dict([(w, nsyl(w)) for w in d.keys() if w[0] == 'a'or'z']) worth_abbreviating = [(k,v) for (k,v) in w_words.iteritems() if v > 3] print worth_abbreviating
任何人都可以帮帮我吗?
答案 0 :(得分:2)
不确定这会解决整个问题,但是:
w_words = dict([(w, nsyl(w)) for w in d.keys() if w[0] == 'a'or'z'])
应该是
w_words = dict([(w, nsyl(w)) for w in d.keys() if w[0] == 'a' or w[0] == 'z'])
因为
if w[0] == 'a'or'z'
表示if (w[0] == 'a') or ('z')
。字符串'z'
是Truish,因此条件始终为True。
例如,
In [36]: 'x' == 'a'or'z'
Out[36]: 'z'
In [37]: 'x' == 'a' or 'x'=='z'
Out[37]: False