Programación Python_Extraer solo números de una cadena de texto

Iniciado por Tuplado, 29 Mayo 2012, 23:51 PM

0 Miembros y 1 Visitante están viendo este tema.

Tuplado

HOLA CHICOS/AS

Mi duda es como sacar de una cadena de texto en Python, sólo los números

Código (python) [Seleccionar]
cadena = str(input("introduce cadena:"))
cadena = 123desf345

solo quiero que me imprima 123345 ¿Cómo lo hago?, alguien me puede ayudar

Alguna función ya hecha de python que me haga esto

Gracias de antemano

Eleкtro

Cita de: Tuplado en 29 Mayo 2012, 23:51 PM
solo quiero que me imprima 123345 ¿Cómo lo hago?, alguien me puede ayudar

Alguna función ya hecha de python que me haga esto

Código (python) [Seleccionar]
import re
cadena = "123abcdef456"
cadena = re.sub("\D", "", cadena)
print cadena


saludos









0x5d

Hola, buen día.
Yo sinceramente prefiero el método sin librerías:
Código (python) [Seleccionar]
print "".join([x for x in "123jajaja345" if x.isdigit()])
Salida: 123345

http://codepad.org/20R5e4HX ahí la salida online

Pd: raw_input es la función para pedir datos alfanuméricos.

Saludos, Javier
¡ SIGUEME EN TWITTER -> @JavierEsteban__ !

.:WindHack:.

Hola,
Se me ocurre otra forma de hacerlo...

Código (python) [Seleccionar]
cString = '1Hola2Mundo3p4c5sd6jaja7...8:D9-0'
nString = ''
for i in cString:
    if (i >= chr(48)) and (i <= chr(57)):
       nString += i
print nString


Salida:
1234567890


Atte. Sebastián.,

Follow me on Twitter: @windhack | Visit my website: www.daw-labs.com

"The only thing they can't take from us are our minds."

adastra

Cita de: EleKtro H@cker en 30 Mayo 2012, 10:13 AM
Código (python) [Seleccionar]
import re
cadena = "123abcdef456"
cadena = re.sub("\D", "", cadena)
print cadena


saludos
Esta es la mejor opción, por simplicidad y eficiencia.

[u]nsigned

Cita de: adastra en 31 Mayo 2012, 21:03 PM
Esta es la mejor opción, por simplicidad y eficiencia.

Recien empienzo con python, pero si se programar en otros lenguajes. Creo que es lo contrario, puede que el codigo sea mas corto. Pero el programa sera menos eficiente...debido a que estamos usando mas memoria y recursos del sistema al importar un modulo (importas todo el modulo re solo para usar una funcion). Por lo que es mas eficiente (en terminos de recursos del sistema) usar los build-in's

Saludos!!

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

adastra

Cita de: El As del Club Paris en  1 Junio 2012, 18:37 PM
Recien empienzo con python, pero si se programar en otros lenguajes. Creo que es lo contrario, puede que el codigo sea mas corto. Pero el programa sera menos eficiente...debido a que estamos usando mas memoria y recursos del sistema al importar un modulo (importas todo el modulo re solo para usar una funcion). Por lo que es mas eficiente (en terminos de recursos del sistema) usar los build-in's

Saludos!!
Si es cierto... omite lo de eficiencia,  :xD :xD sin embargo es la forma más sencilla y limpia de hacerlo.

criskapunk

Buenas,

Se podría únicamente importar la función que se va a utilizar del módulo:

Código (python) [Seleccionar]
from re import sub
cadena = "123abcdef456"
cadena = sub("\D", "", cadena)
print cadena


Un saludo.

Eleкtro

Cita de: criskapunk en  2 Junio 2012, 05:10 AM
Buenas,

Se podría únicamente importar la función que se va a utilizar del módulo:

Código (python) [Seleccionar]
from re import sub
cadena = "123abcdef456"
cadena = sub("\D", "", cadena)
print cadena


Un saludo.

+1 ;D