ordinal not in range

Stefan Behnel stefan_ml at behnel.de
Sat Feb 21 16:00:41 CET 2009


Jaap van Wingerde wrote:
> Stefan Behnel wrote:
>>     Omschrijving = Omschrijving.replace("priv?", 'privé')

actually, make that

	Omschrijving = Omschrijving.replace(u"priv?", u'privé')

(mind the u"...")


> ....
> import codecs
> file = "postbank.csv"
> output = "%s.eb" % file
> outfile = codecs.open(output, "w", "utf_8")
> Omschrijving = u'priv? assuranti?n' # string from postbank.csv
> Omschrijving = Omschrijving.replace("priv?", 'privé')
> Omschrijving = Omschrijving.replace("Assuranti?n", 'Assurantiën')

I guess you mixed up the case here.


> outfile.write (Omschrijving)
> 
> "Traceback (most recent call last):
>   File "/home/jaap/Desktop/unicode.py", line 9, in <module>
>     outfile.write (Omschrijving)
>   File "/usr/lib/python2.5/codecs.py", line 638, in write
>     return self.writer.write(data)
>   File "/usr/lib/python2.5/codecs.py", line 303, in write
>     data, consumed = self.encode(object, self.errors)
> UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 4:
> ordinal not in range(128)"

Does this help?

	outfile = codecs.open(output, "wb", encoding="UTF-8")

(mind the "wb" for 'write binary/bytes')

Looks like you'd be happier with Python 3.0, BTW...

Stefan



More information about the Python-list mailing list