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”。
有没有办法解决我遇到的问题?