令狐少侠 发表于 2018-9-19 16:45:42

TypeError: 'str' object is not callable

import urllib2 as u
import os as o
inn = 'dword.txt'
w = open(inn)
z = w.readline()
b = w.readline()
c = w.readline()
x = w.readline()
m = w.readline()
def Dict(Let, Mod):
    global str
    inn = 'dword.txt'
    den = 'definitions.txt'

    print 'reading definitions...'

    dell =open(den, 'w')

    print 'getting source code...'
    f = u.urlopen('http://dictionary.reference.com/browse/' + Let)
    a = f.read(800)

    print 'writing source code to file...'
    f = open("dic1.txt", "w")
    f.write(a)
    f.close()

    j = open('defs.txt', 'w')

    print 'finding definition is source code'
    for line in open("dic1.txt"):
      if '<meta name="description" content=' in line:
         j.write(line)

    j.close()

    te = open('defs.txt', 'r').read().split()
    sto = open('remove.txt', 'r').read().split()

    print 'skimming down the definition...'
    mar = []
    for t in te:
      if t.lower() in sto:
            mar.append('')
      else:
            mar.append(t)
    print mar
    str = str(mar)
    str = ''.join([ c for c in str if c not in (",", "'", '[', ']', '')])

    defin = open(den, Mod)
    defin.write(str)
    defin.write('               ')
    defin.close()

    print 'cleaning up...'
    o.system('del dic1.txt')
    o.system('del defs.txt')
Dict(z, 'w')
Dict(b, 'a')
Dict(c, 'a')
Dict(x, 'a')
Dict(m, 'a')
print 'all of the definitions are in definitions.txt'
第一个Dict(z, 'w')正常然后第二个Dict(b, 'a')出现错误:
Traceback (most recent call last):
File "C:\Users\test.py", line 64, in <module>
    Dict(b, 'a')
File "C:\Users\test.py", line 52, in Dict
    str = str(mar)
TypeError: 'str' object is not callable
有人知道为什么吗?

深度大佬进修 发表于 2018-9-19 16:46:35

global str

str = str(mar)
你正在重新定义什么str()意思。str是字符串类型的内置Python名称,您不想更改它。
为局部变量使用不同的名称,并删除该global语句。

马猴烧酒 发表于 2018-9-19 16:47:57

global str
str = str(mar)
你正在重新定义str()。str是字符串类型的内置Python名称,你不应该更改它。
为局部变量使用不同的名称,并删除该global语句。

德国骨科 发表于 2018-9-19 16:49:13

在你的代码中一个难以发现的错误是在尝试字符串格式化时缺少%字符:
"foo %s bar %s coffee"("blah","asdf")
但它应该是:
"foo %s bar %s coffee"%("blah","asdf")
失踪%将导致TypeError: 'str' object is not callable。

天使与魔鬼 发表于 2018-9-19 16:52:01

我也遇到了这个问题,我有一个类有一个方法和一个相同名称的字符串属性,我试图调用该方法,但获得了字符串属性。
页: [1]
查看完整版本: TypeError: 'str' object is not callable