[Tutor] string to int or float

Gonçalo Rodrigues op73418 at mail.telepac.pt
Mon Nov 3 07:43:55 EST 2003


On Mon, 03 Nov 2003 17:45:58 +0530, you wrote:

>Hello,
>
>I want to convert a list of strings to list of integers:
>
>e.g.
>
>List = ['207','-308','-8.0','6']
>
>and i want it like this
>
>list = [207, -308, -8.0, 6]
>
>i am trying to do it with int and float functions
>But i dont know how i can check whether the string will be for float 
>function or int function.
>
>for i in range(len(list)):
>      t = int(list[i])
>
>But this will give error when it will encounter '-8.0' as it should be 
>submitted to float()
>
>
>Is there any pythonic way to check whether i should use int or float.
>

The key is the Python interpreter:

>>> int("-0.1")
Traceback (most recent call last):
  File "<interactive input>", line 1, in ?
ValueError: invalid literal for int(): -0.1

OK, int raises ValueError on an invalid string. Then we can use the
try, except block to catch the exception and try float. Something
like:

>>> def convertStr(s):
... 	"""Convert string to either int or float."""
... 	try:
... 		ret = int(s)
... 	except ValueError:
... 		#Try float.
... 		ret = float(s)
... 	return ret
... 

Now let us test it

>>> convertStr("1")
1
>>> convertStr("0.1")
0.10000000000000001
>>> convertStr("")
Traceback (most recent call last):
  File "<interactive input>", line 1, in ?
  File "<interactive input>", line 7, in convertStr
ValueError: empty string for float()
>>> 

OK, it's working as we want it.

Now, the rest is up to you :-)

With my best regards,
G. Rodrigues




More information about the Tutor mailing list