On Tue, Sep 23, 2014 at 6:05 PM, Rock Neurotiko <miguelglafue...@gmail.com> wrote: > 2014-09-24 0:01 GMT+02:00 Larry Martell <larry.mart...@gmail.com>: >> >> I have some code that I inherited: >> >> ' '.join([self.get_abbrev()] + >> [str(f['value') >> for f in self.filters >> if f.has_key('value')]).strip() >> >> >> This broke today when it encountered some non-ascii data. >> >> I changed the str(f['value']) line to f['value'].encode('utf-8'), >> which works fine, except when f['value'] is not a string (it could be >> anything). >> >> Without rewriting this without the list comprehension, how can I write >> this to deal with both strings and non-strings?
> Maybe there are a different way, but you can do this: > > ' '.join([self.get_abbrev()] + > [str(f['value').encode('utf-8') if type(f['value']) is str else > str(f['value'] > for f in self.filters > if f.has_key('value')]).strip() Thanks for the reply, but please don't top post. This worked for me: '.join([self.get_abbrev()] + [f['value'].encode('utf-8') if type(f['value']) is unicode else str(f['value']) for f in self.filters if f.has_key('value')]).strip() -- https://mail.python.org/mailman/listinfo/python-list