用.endwith函数计算单词中的音节

时间:2018-10-31 03:16:03

标签: python python-2.7

numSyllables(Well):
word = Well.lower()
Syllable = 0
vowels = "aeiouy"

Sy=(len(Well))
if Sy <=3:
    Syllable+= 1
for index in range(1,len(Well)):
    if Well[index] in vowels and Well[index-1] not in vowels:
        Syllable+=1

        if Well.endwith ("es") and Well.endwith("ed"):
            Syllable -=1
        elif Well.endwith ("des") and Well.endwith("tes") and Well.endwith("ded") and Well.endwith("ted"):
            Syllable +=1
        elif Well.endswith ("e"):
            Syllable -=1
if Syllable == 0:
    Syllable +=1

return Syllable

我正在尝试计算单词中的音节,如果该音节的字母少于3个,则表示一个音节,如果相邻的元音彼此相邻,则认为一个音节,即-es或–的单词结尾ed会被忽略,除非它前面带有“ d”或“ t”。 (例如,“看护”和“受害”是一个音节,而“梳理”和“陈述”是两个音节) 以“ e”结尾的单词通常是沉默的(不计算在内);除非以“ le”结尾(例如,“ kite”和“ mode”是一个音节,但“ little”和“ kibble:是两个)

每当我运行我的代码时,都会得到以下结果: “ /Users/andyz./Documents/Well/RScores.py”,第36行,以numSyllables为单位     如果Well.endwith(“ es”)和Well.endwith(“ ed”): AttributeError:“ str”对象没有属性“ endwith”。

有没有办法解决我遇到的问题?

1 个答案:

答案 0 :(得分:1)

我认为应该为 endswith ,而不是结尾

apiserver