import constants import os def remove_tricky_unicode(x): try: x = x.decode("utf-8") x = x.replace("\u2018", "'").replace("\u2019", "'") x = x.replace("\u201c", '"').replace("\u201d", '"') x = x.replace("\u2e3a", "-").replace("\u2014", "-") except: pass return x class file_writer: def __init__(self, filename): self.full_filename = os.path.join(constants.pages_dir, filename) self.f = open(self.full_filename, "wb") self.xforms = [remove_tricky_unicode] def add_xform(self, xform): self.xforms.append(xform) def write(self, data): for xform in self.xforms: data = xform(data) self.f.write(data.encode("utf-8")) def done(self): self.f.close() def close(self): self.done() # Test # def toupper(x): # return x.upper() # # fw = file_writer("test") # fw.add_xform(toupper) # fw.write(u"This is a \u201ctest\u201d. \n") # fw.done()