Fix Python – Python __str__ versus __unicode__

Is there a python convention for when you should implement __str__() versus __unicode__(). I’ve seen classes override __unicode__() more frequently than __str__() but it doesn’t appear to be consistent. Are there specific rules when it is better to implement one versus the other? Is it necessary/good practice to implement both?

Fix Python – Writing Unicode text to a text file?

I’m pulling data out of a Google doc, processing it, and writing it to a file (that eventually I will paste into a Wordpress page).
It has some non-ASCII symbols. How can I convert these safely to symbols that can be used in HTML source?
Currently I’m converting everything to Unicode on the way in, joining it all together in a Python string, then….

Fix Python – u’\ufeff’ in Python string

I got an error with the following exception message:
UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\ufeff’ in
position 155: ordinal not in range(128)

Not sure what u’\ufeff’ is, it shows up when I’m web scraping. How can I remedy the situation? The .replace() string method doesn’t work on it.

Fix Python – How to get string objects instead of Unicode from JSON?

I’m using Python 2 to parse JSON from ASCII encoded text files.
When loading these files with either json or simplejson, all my string values are cast to Unicode objects instead of string objects. The problem is, I have to use the data with some libraries that only accept string objects. I can’t change the libraries nor update them.
Is it possib….

Fix Python – Replace non-ASCII characters with a single space

I need to replace all non-ASCII (\x00-\x7F) characters with a space. I’m surprised that this is not dead-easy in Python, unless I’m missing something. The following function simply removes all non-ASCII characters:
def remove_non_ascii_1(text):

return ”.join(i for i in text if ord(i)<128) And this one replaces non-ASCII characters with the ....

Fix Python – UnicodeDecodeError, invalid continuation byte

Why is the below item failing? Why does it succeed with “latin-1” codec?
o = “a test of \xe9 char” #I want this to remain a string as this is what I am receiving
v = o.decode(“utf-8”)

Which results in:
Traceback (most recent call last):
File ““, line 1, in
File “C:\Python27\lib\encodings\”,
line 16, in decode