查看: 2005|回复: 4

TypeError: 'str' object is not callable

[复制链接]

10

主题

72

帖子

180

积分

注册会员

Rank: 2

积分
180
发表于 2018-9-19 16:45:42 | 显示全部楼层 |阅读模式
  1. import urllib2 as u
  2. import os as o
  3. inn = 'dword.txt'
  4. w = open(inn)
  5. z = w.readline()
  6. b = w.readline()
  7. c = w.readline()
  8. x = w.readline()
  9. m = w.readline()
  10. def Dict(Let, Mod):
  11.     global str
  12.     inn = 'dword.txt'
  13.     den = 'definitions.txt'

  14.     print 'reading definitions...'

  15.     dell =open(den, 'w')

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

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

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

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

  28.     j.close()

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

  31.     print 'skimming down the definition...'
  32.     mar = []
  33.     for t in te:
  34.         if t.lower() in sto:
  35.             mar.append('')
  36.         else:
  37.             mar.append(t)
  38.     print mar
  39.     str = str(mar)
  40.     str = ''.join([ c for c in str if c not in (",", "'", '[', ']', '')])

  41.     defin = open(den, Mod)
  42.     defin.write(str)
  43.     defin.write('                 ')
  44.     defin.close()

  45.     print 'cleaning up...'
  46.     o.system('del dic1.txt')
  47.     o.system('del defs.txt')
  48. Dict(z, 'w')
  49. Dict(b, 'a')
  50. Dict(c, 'a')
  51. Dict(x, 'a')
  52. Dict(m, 'a')
  53. 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
有人知道为什么吗?
回复

使用道具 举报

19

主题

68

帖子

225

积分

论坛管理

Rank: 4

积分
225
发表于 2018-9-19 16:46:35 | 显示全部楼层
  1. global str

  2. str = str(mar)
复制代码

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

使用道具 举报

22

主题

107

帖子

266

积分

中级会员

Rank: 3Rank: 3

积分
266
发表于 2018-9-19 16:47:57 | 显示全部楼层
  1. global str
  2. str = str(mar)
复制代码

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

使用道具 举报

4

主题

37

帖子

98

积分

注册会员

Rank: 2

积分
98
发表于 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。
回复

使用道具 举报

11

主题

63

帖子

159

积分

注册会员

Rank: 2

积分
159
发表于 2018-9-19 16:52:01 | 显示全部楼层
我也遇到了这个问题,我有一个类有一个方法和一个相同名称的字符串属性,我试图调用该方法,但获得了字符串属性。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表