Python - insertar salto de linea sobre texto continuo

   
Vista:

insertar salto de linea sobre texto continuo

Publicado por Sergio (21 intervenciones) el 09/08/2017 17:36:55
Buenas tardes chicos,

Tengo un problemilla que no soy capaz de resolver. Me estoy pegando con bucles y me he puesto un ejercicio tonto a mi mismo, que no soy capaz de solventar. Tengo:

1,2,3,4,5,6,7,8,9,10,11,12,13,14.....

y quiero ponerlo
1,2,3,4,5,
6,7,8,9,10,
...

No sé como controlar el bucle con python, ¿podeis ayudarme?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

insertar salto de linea sobre texto continuo

Publicado por xve (1568 intervenciones) el 09/08/2017 20:03:29
Hola Sergio, esos numeros son una lista o una cadena?
Entiendo que vas mostrando los numeros de la lista en un bucle y quieres cortar en el numero 5 verdad?

haber si te sirve esto para python 3.x:
1
2
3
4
for i in range(1,15):
	if i==6:
		print()
	print("%s," % i,end="")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo

insertar salto de linea sobre texto continuo

Publicado por Andres Leonardo (38 intervenciones) el 09/08/2017 20:15:39
disculpa qeu no te el codigo pero te va la idea

Lo puedes hacer con while o lo que sea...

1
2
3
4
5
6
7
limite  = 30
for i = 1 to  limite
     if (Num/5) = 0 then
           print Num  & " /n"
      else
           print Num
next i
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

insertar salto de linea sobre texto continuo

Publicado por Sergio (21 intervenciones) el 09/08/2017 20:33:22
Buenas tardes,

El primer codigo expuesto de XVE me da error en

end="".....

El segundo ni funciona..... solo conozco esa forma de pogramar en SAS, en python no me funciona el TO...... jo, ¿o es la version?

El texto pueden ser numeros o caracteres. Quisiera encontrar la sexta COMA y hacer el break o salto de linea, puse como ejemplo numeros, pero puede ser cualquier cosa.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo

insertar salto de linea sobre texto continuo

Publicado por Andres Leonardo (38 intervenciones) el 09/08/2017 22:46:43
solo te daba el seudocodigo no tengo python aCA..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

insertar salto de linea sobre texto continuo

Publicado por Sergio (21 intervenciones) el 09/08/2017 22:48:38
Las prisas y el sueño no son buenas consejeras.... disculpa

Un Cordial Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

insertar salto de linea sobre texto continuo

Publicado por xve (1568 intervenciones) el 09/08/2017 23:22:49
Hola Sergio, se me olvido comentarte que es para python 3.x... tienes python 2.x?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

insertar salto de linea sobre texto continuo

Publicado por Sergio (21 intervenciones) el 10/08/2017 06:41:51
Correcto, 2.7.5.

Un Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

insertar salto de linea sobre texto continuo

Publicado por xve (1568 intervenciones) el 10/08/2017 08:49:03
Para python 2.x seria algo así:
1
2
3
4
for i in range(1,15):
	if i==6:
		print ""
	print "%s," % i,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

insertar salto de linea sobre texto continuo

Publicado por Sergio (21 intervenciones) el 10/08/2017 09:29:55
Esta es su salida

1, 2, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14,

Un Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

insertar salto de linea sobre texto continuo

Publicado por kip (228 intervenciones) el 10/08/2017 16:25:07
Hola, la respuesta de Xve es muy especifica y te la deja muy clara para que continues !

De todas formas algo simple podria hacerse de esta forma:

1
2
3
4
5
6
7
8
9
10
def printNums(nums, elems = 5):
    final = ''
    steps = 0
    for num in nums:
        steps += 1
        final += '%s, ' % num
        if steps == elems:
            final += '\n'
            steps = 0
    return final

Luego la probamos:

1
print printNums(range(1, 15), 5)

Me mostrara:
1
2
3
1, 2, 3, 4, 5,
6, 7, 8, 9, 10,
11, 12, 13, 14,

Tambien:
1
print printNums(range(1, 15), 2)

1
2
3
4
5
6
7
1, 2,
3, 4,
5, 6,
7, 8,
9, 10,
11, 12,
13, 14,

Puedes hacerlo tambien cortando en trozos el array de rango de numeros y con ellos hacer lo que desees, algo asi:

1
2
3
4
def printNums(nums, elems = 5):
    nNums = [nums[i:i+elems] for i in range(0, len(nums), elems)]
    for num in nNums:
        print '%s,' % ', '.join(map(str, num))

Pero me parece que es algo mas complejo si recien estas iniciando...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

insertar salto de linea sobre texto continuo

Publicado por Sergio (21 intervenciones) el 10/08/2017 16:41:53
Wow¡ No se puede decir otra cosa. Entonces, para tener la funciona completa, me queda investigarme como cambiar el 15, valor fijo, por una variable que me cuente los elementos que tiene mi fichero, ¿es correcto?

La primera parte la entiendo, gracias. La segunda, me puedes aclarar la función?

Un Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

insertar salto de linea sobre texto continuo

Publicado por kip (228 intervenciones) el 10/08/2017 16:45:01
Un fichero ? Quieres hacer un 'break' de cada ciertos caracteres de este como se hace con la lista de numeros ? O a que te refieres con el valor fijo 15 ?

Podrias darnos detalles, asi cualquiera puede ayudarte mejor!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

insertar salto de linea sobre texto continuo

Publicado por Sergio (21 intervenciones) el 10/08/2017 16:50:34
Buenas tardes,

Es que voy metiendo complejidad a los ejercicios que me pongo, hacerlos dinamicos. La idea original es con una lista fiha, el siguiente paso es hacerlo desde fichero. Ahora mismo la función requiere esta forma

printNums(range(1, 15), 2)

Para optimizarla, 15, debería ser un valor devuelto de otra función,

printNums(range(1, conteo), 2)

pero esto de momento quisiera intentarlo yo, que quiero aprender... entiendase por favor.

Un Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

insertar salto de linea sobre texto continuo

Publicado por kip (228 intervenciones) el 10/08/2017 16:55:29
Exacto ! Ya tienes la idea entonces para que la explotes y desarrolles lo que desees !

Suerte !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

insertar salto de linea sobre texto continuo

Publicado por Sergio (21 intervenciones) el 10/08/2017 17:00:57
Muchas veces necesitas una luz en la oscuridad para no caer en el abismo, gracias por mantener esta comunidad viva incluso en esta época de vacaciones.

Un Saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

insertar salto de linea sobre texto continuo

Publicado por Sergio (21 intervenciones) el 10/08/2017 17:21:44
Entonces este sería el codigo completo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def printNums(nums, elems):
    final = ''
    steps = 0
    for num in nums:
        steps += 1
        final += '%s, ' % num
        if steps == elems+1:
            final += '\n'
            steps = 0
    return final
 
fichero = open('escribir.txt', 'r')
texto = fichero.read()
fichero.close()
 
cuenta = 0
for salto in texto:
    if salto == ',':
        cuenta += 1
 
print printNums(range(1, cuenta), 5)

Solo que todavía tiene un bug... tanto en el original como mi versión, el ultimo elemento no lo pinta. He creado un txt hasta 100, y este número no lo pinta. Igual pasa que con hasta 15... Lo investigo y no os mareo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

insertar salto de linea sobre texto continuo

Publicado por kip (228 intervenciones) el 10/08/2017 17:28:18
Simplemente dale un + 1 al num final del rango, ya que range() siempre establecera que el ultimo elemento de la lista que retorna es el segundo arg que se le pase - 1

1
print printNums(range(1, cuenta + 1), 5)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

insertar salto de linea sobre texto continuo

Publicado por Sergio (21 intervenciones) el 10/08/2017 17:51:15
Si me estaba pareciendo, estaba haciendo otras pruebas y me parecia que eran intervalos cerrados de datos.

Por otro lado, antes de abrir algun hilo. He visto poco material sobre excepciones, pero ya sé que existen... ¿algun manual ? Y sobretodo, ¿conoceis algun IDE de desarrollo para Linux? Programo directamente en el IDLE, me han hablado de Anaconda, pero soy incapaz de hacerlo tirar.

Un Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad