2017-12-03 159 views
0

我在我的代碼,這個錯誤,我不知道如何固定錯誤類型錯誤:「海峽」對象不是可調用的蟒蛇

import nltk 
from nltk.util import ngrams 


def word_grams(words, min=1, max=4): 
    s = [] 
    for n in range(min, max): 
     for ngram in ngrams(words, n): 
      s.append(' '.join(str(i) for i in ngram)) 
    return s 

print word_grams('one two three four'.split(' ')) 

erorr在

s.append(' '.join(str(i) for i in ngram)) 

類型錯誤:「海峽'object is callable

+3

較淺的例子你定義使用'str'作爲變量名的字符串? – abccd

+2

你在哪裏定義了一個名爲'str'的​​變量? –

回答

2

您發佈的代碼是正確的,並且可以與python 2.7和3.6一起使用(對於3.6,您必須將括號括在print語句中)。但是,代碼原樣有3個空格縮進,應該固定爲4個空格。

這裏如何重現你的錯誤

s = [] 
str = 'overload str with string' 
# The str below is a string and not function, hence the error 
s.append(' '.join(str(x) for x in ['a', 'b', 'c'])) 
print(s) 

Traceback (most recent call last): 
    File "python", line 4, in <module> 
    File "python", line 4, in <genexpr> 
TypeError: 'str' object is not callable 

必須有地方在那裏你重新定義海峽內置運營商爲STR值像上面的例子。

這裏同樣的問題

a = 'foo' 
a() 
Traceback (most recent call last): 
    File "python", line 2, in <module> 
TypeError: 'str' object is not callable 
1

我通過運行你的代碼得到輸出。

O/P: 
['one', 'two', 'three', 'four', 'one two', 'two three', 'three four', 'one two three', 'two three four'] 

我猜錯誤不會來。這是你期望的嗎?

相關問題