@snafu: Nicht rumbasteln sondern verstehen was da passiert und gezielt handeln.
@Hyperion: Das ist ziemlich unsinnig. Du nimmst eine Unicode-Zeichenkette u'%s' und kodierst die als ISO-8859-1 ─ das ist '%s' etwas komplizierter geschrieben. Dann formatierst Du eine Unicode-Zeichenkette in eine normale Zeichenkette, was dazu führt, das die normale Zeichenkette erst einmal nach Unicode umgewandelt wird ─ aus dem '%s' wird also wieder u'%s'. *Das* kann man auch einfacher haben.
Die Frage ist, warum von `get_moods()` überhaupt eine Zeichenkette kommt und kein Unicode-Objekt. Wenn man aus den Seiten Unicode bekommt muss das ja schon mal völlig unnötigerweise umkodiert worden sein.
Wenn Textdaten das Programm betreten, sollte man sie sofort in Unicode umwandeln. `BeautifulSoup` und XML-Bibliotheken machen das schon. Innerhalb des Programms arbeitet man immer mit Unicode und erst zum spätmöglichsten Zeitpunkt, kurz bevor die Daten das Programm als Bytes verlassen müssen, wandelt man wieder entsprechend um. Alles andere ist unnötig kompliziert.