如何修复Python中的“ TypeError:'str'对象不可调用”错误?

时间:2019-07-19 10:43:55

标签: python python-3.x

我试图按一个文档中使用的单词的频率在另一个文档中进行排名。

由于我是初学者,所以我要求某人帮助我编写代码,这就是他们给我的。这给我一个错误。

from collections import defaultdict
occurences = defaultdict(int)
with open("booksandtranscripts.txt","r") as file:
    booksandtranscripts = file.read()
    for word in booksandtranscripts.split(" "):
        occurences[word] += 1
words_and_frequencies = []
with open("allminow.txt","r") as file:
    allminow = file.read()
    for word in allminow.split(" "):
        words_and_frequencies.append((occurences[word],[word]))
for frequency,word in sorted(words_and_frequencies):
    print("%s : %i %" (word, frequency))

我希望它在一个文档的单词旁边打印出另一文档中这些单词的出现频率。我知道这段代码不会导出csv,但是我也打算尝试添加它。

这是我遇到的错误:

Traceback (most recent call last):
  line 15, in <module>
    print("%s : %i %" (word, frequency))
TypeError: 'str' object is not callable

2 个答案:

答案 0 :(得分:0)

您的打印格式错误:

  

基本格式:简单的位置格式可能是最常见的用例。如果您的论据顺序不太可能使用   进行更改,您只需要连接几个元素。

     

由于元素没有用像   这种简单样式的名称只能用于格式化相对   元素数量少。

print("%s : %i %%" % (word, frequency)) # To print the % sign you need to 'escape' it with another % sign

print ('{} : {} %'.format(word, frequency))

print(f"{word} : {frequency} %")

答案 1 :(得分:-1)

我认为错误在于表示变量的打印字符串的语法上。我不了解C风格的%-thing,所以我只建议改用当前的f字符串语法:

print(f"{word}: {frequency} %")