Foros del Web » Programando para Internet » Python »

Números consecutivos

Estas en el tema de Números consecutivos en el foro de Python en Foros del Web. Buenas a todos, Soy nuevo en python, en mis inicios programe en C++ y desarrolle algo en QT para hacer herramientas útiles para el trabajo, ...
  #1 (permalink)  
Antiguo 19/02/2014, 13:43
 
Fecha de Ingreso: febrero-2014
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Números consecutivos

Buenas a todos,

Soy nuevo en python, en mis inicios programe en C++ y desarrolle algo en QT para hacer herramientas útiles para el trabajo, pero nada mas.

Ahora estoy trabajando en algo muy sencillo. Se trata de modificar el contenido de un .txt, si consigo esto, ya poco me quedara para acabarlo. Vamos al lío:

Necesito que cuando se capten por ejemplo 6 números seguidos. los capture y que ponga un espacio entre el 2º y el 3º además de introducir un texto antes de los 2 primeros números y después del espacio que ponga., cosas así.

Imagino que lo primero que tengo que hacer es declarar un range que almacene esos 6 primeros números, pero no lo tengo claro, he revisado el faq y googleado pero nada de nada.

A ver si podéis ayudarme que llevo días atrancado en esta tontería...
  #2 (permalink)  
Antiguo 19/02/2014, 14:18
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Números consecutivos

regex?

Esto suena mucho a regex y manipulación de cadenas.

Código Python:
Ver original
  1. # Detecta 6 números seguidos o mas.
  2. import re
  3. pattern = re.compile(r'(\d{6,})')

De ahí puedes usar sub, find, match, search, groups, etc... Para hacer mas operaciones
http://docs.python.org/2/library/re.html
  #3 (permalink)  
Antiguo 20/02/2014, 13:02
 
Fecha de Ingreso: febrero-2014
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Números consecutivos

Muchas gracias! Voy a leerme el comando, os mantendré informado.

Mil gracias!
  #4 (permalink)  
Antiguo 20/02/2014, 13:39
 
Fecha de Ingreso: febrero-2014
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Números consecutivos

buff que malo soy xD

Lo que necesito es cuando encuentre 6 números seguidos en un txt, los capture, bien con el comando que me puso razpeitia. Pero como muestro los valores capturados uno a uno? pattern[0] y así?

Ejemplo:
pattern almacena 121212. Pues necesito que sustituya "121212" por: "el día 12 a las 1212"

Gracias de nuevo, sigo leyendo a ver si doy con ellos.

Un saludo!

Última edición por Tormund; 20/02/2014 a las 13:44 Razón: correccion
  #5 (permalink)  
Antiguo 20/02/2014, 13:46
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: Números consecutivos

Código Python:
Ver original
  1. In [1]: "121212"[:2]
  2. Out[1]: '12'
  3.  
  4. In [2]: "121212"[2:]
  5. Out[2]: '1212'

Saludos
__________________
Grupo Telegram Docker en Español
  #6 (permalink)  
Antiguo 21/02/2014, 07:47
 
Fecha de Ingreso: febrero-2014
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Números consecutivos

Gracias, pero sigo sin tenerlo claro... lo siento. Mi código es este:

Código:
import re
pattern = re.compile(r'(\d{6,})')
s15 = open("c:/wx/wx.txt").read()
s15 = s15.replace(pattern, 'DESDE EL DIA 'print pattern[0]print pattern[1]' A LAS 'print pattern[2]print pattern[3]print pattern[4]print pattern[5])

f = open("c:/wx/wx.txt",'w') 
f.write(s15) 
f.close()
Obviamente este mal, en c recuerdo que era con &f pero desconozco en python como hacerlo.

Siento mis nulos conocimientos. Un saludo.

Última edición por Tormund; 21/02/2014 a las 08:03 Razón: correccion
  #7 (permalink)  
Antiguo 21/02/2014, 13:34
 
Fecha de Ingreso: febrero-2014
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Números consecutivos

Solucionado, al final aplique este código:

Código Python:
Ver original
  1. def repl(matchobj):  
  2.     return 'EL DIA ' + matchobj.group(0)[0:2] + ' A LAS ' + matchobj.group(0)[2:6];
  3. s15 = open("c:/wx/wx.txt").read()
  4. s15 = re.sub('\d{6}', repl, s15);
  5. f = open("c:/wx/wx.txt",'w')
  6. f.write(s15)
  7. f.close()

Gracias por vuestra ayuda

Última edición por razpeitia; 22/02/2014 a las 21:52

Etiquetas: consecutivos, gui
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:37.