Best way to deal with different data types in a list comprehension
Larry Martell
larry.martell at gmail.com
Tue Sep 23 18:20:06 EDT 2014
On Tue, Sep 23, 2014 at 6:05 PM, Rock Neurotiko
<miguelglafuente at gmail.com> wrote:
> 2014-09-24 0:01 GMT+02:00 Larry Martell <larry.martell at 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()
More information about the Python-list
mailing list