How to convert strings into integers in Python?

I have a tuple of tuples from a MySQL query like this:

T1 = (('13', '17', '18', '21', '32'),
      ('07', '11', '13', '14', '28'),
      ('01', '05', '06', '08', '15', '16'))

I'd like to convert all the string elements into integers and put them back into a list of lists:

T2 = [[13, 17, 18, 21, 32], [7, 11, 13, 14, 28], [1, 5, 6, 8, 15, 16]]

I tried to achieve it with eval but didn't get any decent result yet.


int() is the Python standard built-in function to convert a string into an integer value. You call it with a string containing a number as the argument, and it returns the number converted to an integer:

print (int("1") + 1)

The above prints 2 .

If you know the structure of your list, T1 (that it simply contains lists, only one level), you could do this in Python 2:

T2 = [map(int, x) for x in T1]

In Python 3:

T2 = [list(map(int, x)) for x in T1]

You can do this with a list comprehension:

T2 = [[int(column) for column in row] for row in T1]

The inner list comprehension ( [int(column) for column in row] ) builds a list of int s from a sequence of int -able objects, like decimal strings, in row . The outer list comprehension ( [... for row in T1]) ) builds a list of the results of the inner list comprehension applied to each item in T1 .

The code snippet will fail if any of the rows contain objects that can't be converted by int . You'll need a smarter function if you want to process rows containing non-decimal strings.

If you know the structure of the rows, you can replace the inner list comprehension with a call to a function of the row. Eg.

T2 = [parse_a_row_of_T1(row) for row in T1]

我宁愿只使用理解列表:

[[int(y) for y in x] for x in T1]
链接地址: http://www.djcxy.com/p/31800.html

上一篇: 如何将一个字符串列表转换为Python中的整数

下一篇: 如何将字符串转换为Python中的整数?