Python Style Question

MRAB python at mrabarnett.plus.com
Thu Oct 30 13:21:28 CET 2014


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('"'))




More information about the Python-list mailing list