Explore Courses Blog Tutorials Interview Questions
0 votes
in Python by (47.6k points)


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('' + Let) 

a = 

print 'writing source code to file...' 

f = open("dic1.txt", "w") 



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

print 'finding definition is source code' 

for line in open("dic1.txt"): 

if '<meta name="description"content=' in line: 



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: 




print mar 

str = str(mar) 

str = ''.join([ c for c in str if c not in (",", "'", '[', ']', '')]) 

defin = open(den, Mod) 


defin.write(' ') 


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'

The first Dict(z, 'w') works and then the second time around it comes up with an error:

Traceback (most recent call last): 

 File "C:\Users\", line 64, in <module> 

Dict(b, 'a') 

 File "C:\Users\", line 52, in Dict 

   str = str(mar) 

TypeError: 'str' object is not callable

Does anyone know why this is?

I've already tried that and I get the error:

Traceback (most recent call last): 

 File "C:\Users\", line 63, in <module>

  Dict(z, 'w') 

File "C:\Users\", line 53, in Dict 

strr = ''.join([ c for c in str if c not in (",", "'", '[', ']', '')])

TypeError: 'type' object is not iterable

1 Answer

0 votes
by (106k points)

The error you are getting because of the following reason:-

global str 

str = str(mar)

You are redefining what str() means. str is the built-in Python name of the string type, and you don't want to change it.

Use a different name for the local variable, and remove the global statement.

To know more about this you can have a look at the following video tutorial:-

Related questions

Browse Categories