On 2014-10-30 11:10, Steven D'Aprano wrote:
Anton wrote:

Let's say I have an incoming list of values *l*. Every element of *l* can
be one of the following options:
1) an integer value
2) a string in form of '<int_value>', e.g. '7'
3) a string with a json serialization of an integer value, e.g. '"7"'
4) something else that should be ignored

I need to transform this list into another list with values from options
1)-3) coerced to int. The code below should do this.

I don't particularly like either version. I prefer this:

def load_int(obj):
     if isinstance(obj, int):
         # Case 1), an int, e.g. 7
         return obj
     elif isinstance(obj, str):
         # Case 2) and 3), a str or JSON serialised int.
         # E.g. '7' or '"7"'.
         try:
             return int(obj)
         except ValueError:
             return int(json.loads(obj))
     raise TypeError('require int or str, got %s' % type(obj).__name__)

[snip]

How about:

int(str(obj).strip('"'))

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to