t2=""
def Proc(text): # "text" is some random text or use OrigText for word in text: for letter in word: if letter in std.keys(): letter=std[letter] t2=t2+letter # the problem is referene to this elif letter in ext.keys(): letter=ext[letter] t2=t2+letter elif letter in punc.keys(): letter=punc[letter] t2=t2+letter
As written, t2 is a global because of the statement at the top:
t2=""
Inside Proc, the statement:
t2=t2+letter # the problem is referene to this
declares t2 as local to the function. (Assignment to a name inside a function declares that name as local to the function.) You could use the global keyword, but a better approach would be something like:
replacements = std.items() + ext.items() + punc.items()
def proc(text): result = [] for word in text: for k, v in replacements: word = word.replace(k, v) result.append(word) return ''.join(result)
Now, instead of using a global 't2', I simply create a string and return it. Note that I've also replaced your inefficient string addition with the more efficient list-append and list-join.
Steve -- http://mail.python.org/mailman/listinfo/python-list