"Junaid" <junu...@gmail.com> wrote in message news:0267bef9-9548-4c43-bcdf-b624350c8...@p23g2000vbl.googlegroups.com...
I want to do replacements in a utf-8 text file. example

f=open("test.txt","r") #this file is uft-8 encoded
raw = f.read()
txt = raw.decode("utf-8")

You can use the codecs module to open and decode the file in one step


txt.replace{'English', ur'ഇംഗ്ലീഷ്') #replacing raw unicode string,
but not working

The replace method returns the altered string. It does not modify it in place. You also should use Unicode strings for both the arguments (although it doesn't matter in this case). Using a raw Unicode string is also unnecessary in this case.

   txt = txt.replace(u'English', u'ഇംഗ്ലീഷ്')

f.write(txt)

You opened the file for writing. You'll need to close the file and reopen it for writing.

f.close()
f.flush()

Flush isn't required.  close() will flush.

Also to have text like ഇംഗ്ലീഷ് in a file you'll need to declare the encoding of the file at the top and be sure to actually save the file in the encoding.

In summary:

   # coding: utf-8
   import codecs
   f = codecs.open('test.txt','r','utf-8')
   txt = f.read()
   txt = txt.replace(u'English', u'ഇംഗ്ലീഷ്')
   f.close()
   f = codecs.open('test.txt','w','utf-8')
   f.write(txt)
   f.close()

-Mark


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to