我在SO上看过类似的问题,但我认为没有任何东西与此类似。但是,也许我错了,这就是我在这里的原因。这是在Mac上。 Python版本是2.7.6。
尝试获取单词中的所有单词中的音节。
写了一个模块' wordfunc.py'有这个:
from nltk.corpus import cmudict as cmud
import nltk
d=cmud.dict()
def parse_line(line):
return nltk.word_tokenize(line)
def ns(word):
if word.lower() not in d:
return -1
else:
# print lcase
return [len(list(y for y in x if isdigit(y[-1]))) for x in d[word.lower()]]
主程序test.py有这个:
#!/usr/bin/env python
import wordfunc
import sys
if len(sys.argv) == 1:
print "No arguments"
exit()
## read a stream first
try:
with open(sys.argv[1]) as entrywound:
for line in entrywound:
words = wordfunc.parse_line(line)
## print word and number of syllables per word
for w in words:
print 'Word: '+w
print 'Sysllables: '
print wordfunc.ns(w)
except IOError:
print "Unable to open file. Exiting!"
exit(1)
当我使用文件运行此程序时,出现此错误:
./test.py /tmp/test
Word: quick
Sysllables:
Traceback (most recent call last):
File "./test.py", line 19, in <module>
print wordfunc.ns(w)
File "/Users/sid/Cave/scripts/wordfunc.py", line 14, in ns
return [len(list(y for y in x if isdigit(y[-1]))) for x in d[word.lower()]]
File "/Users/sid/Cave/scripts/wordfunc.py", line 14, in <genexpr>
return [len(list(y for y in x if isdigit(y[-1]))) for x in d[word.lower()]]
NameError: global name 'isdigit' is not defined
我做错了什么?我的意思是,是不是isdigit
已经是一个全球性的职能?
答案 0 :(得分:2)
不,这是一种字符串方法。我怀疑你想要y[-1].isdigit()
。
答案 1 :(得分:0)
isdigit()
是字符串上的方法,如下所示:'3'.isdigit()
。
尝试将代码更改为y[-1].isdigit()
。