¿Cómo dividir una cadena en enteros en Python?

Tengo una cadena "42 0" (por ejemplo) y necesito obtener una matriz de los dos enteros. ¿Puedo hacer un .split en un espacio?

6 respuestas no es suficiente para una pregunta que OP pudo haberse contestado fácilmente probando en el intérprete :

 >>> "42 0".split() # or .split(" ") ['42', '0'] 

A: si

Pero no se ha señalado específicamente que el método de split se split por defecto en espacios en blanco (espacio, tabulador, retorno de carro y nueva línea ) si no le proporciona un argumento.

 >>> " \r 42\n\r \t\n \r0\n\r\n".split() ['42', '0'] 

Además, el uso de map generalmente se ve más limpio que el uso de listas de comprensión cuando se desea convertir los elementos de iterables a incorporados como int , float , str , etc. En Python 2:

 >>> map(int, "42 0".split()) [42, 0] 

En Python 3, map devolverá un objeto perezoso, puedes incluirlo en una lista con list() , o usarlo como está en un bucle for, por ejemplo:

 >>> map(int, "42 0".split())  >>> list(map(int, "42 0".split())) [42, 0] 
 text = "42 0" nums = [int(n) for n in text.split()] 
 l = (int(x) for x in s.split()) 

Si está seguro de que siempre hay dos enteros, también puede hacer:

 a,b = (int(x) for x in s.split()) 

o si planea modificar la matriz después de

 l = [int(x) for x in s.split()] 

Esto debería funcionar:

 [ int(x) for x in "40 1".split(" ") ] 

Por supuesto, puede llamar a split , pero devolverá cadenas, no enteros. Hacer

 >>> x, y = "42 0".split() >>> [int(x), int(y)] [42, 0] 

o

 [int(x) for x in "42 0".split()] 

Otras respuestas ya muestran que puede usar split () para obtener los valores en una lista . Si estuvieras preguntando acerca de las matrices de Python, aquí hay una solución:

 import array s = '42 0' a = array.array('i') for n in s.split(): a.append(int(n)) 

Edición: Una solución más concisa:

 import array s = '42 0' a = array.array('i', (int(t) for t in s.split())) 

Aquí está mi respuesta para python 3.

 some_string = "2 3 8 61 " list(map(int, some_string.strip().split())) 

Dado: text = "42 0"

 import re numlist = re.findall('\d+',text) print(numlist) ['42', '0'] 

Sugiero verificar si la subcadena es un dígito:

 In [1]: [int(i) for i in '1 2 3a'.split() if i.isdigit()] Out[1]: [1, 2] 

Simplemente use strip() para eliminar los espacios vacíos y aplicar la conversión int explícita en la variable.

Ex:

 a='1 , 2, 4 ,6 ' f=[int(i.strip()) for i in a]