PyQuiz 51 - split() consecutivo en Python | Quiz interactivo

PyQuiz 51 – split() consecutivo en Python

El reto

texto = 'a,,b,,c'
print(len(texto.split(',')))

¿Cuál es el resultado?

  • a) 3
  • b) 5
  • c) 4

Piensa tu respuesta antes de seguir leyendo…


Concepto: split() consecutivo

El método split() de las cadenas en Python divide una cadena usando un separador específico. Cuando ese separador aparece de forma consecutiva, Python genera cadenas vacías entre cada aparición del separador, en lugar de ignorarlas.

En el caso de 'a,,b,,c'.split(','), Python encuentra: 'a', luego una coma, luego otra coma inmediatamente (lo que genera ''), luego 'b', luego dos comas más (otra cadena vacía), y finalmente 'c'. El resultado es ['a', '', 'b', '', 'c'], que tiene 5 elementos.

Si quieres eliminar las cadenas vacías resultantes de separadores consecutivos, puedes usar split() sin argumentos (que trata múltiples espacios como uno solo) o filtrar el resultado con una comprensión de lista.

Paso a paso

  1. texto = 'a,,b,,c' — Se crea la cadena con dos comas consecutivas entre cada letra.
  2. texto.split(',') — Python divide por cada coma individual: encuentra 'a', luego entre las dos comas una cadena vacía '', luego 'b', luego otra cadena vacía '', luego 'c'.
  3. El resultado de split() es ['a', '', 'b', '', 'c'] — una lista con 5 elementos.
  4. len(['a', '', 'b', '', 'c']) — Contamos los 5 elementos, incluyendo las dos cadenas vacías.
  5. print(5) — Se imprime 5.

📥 Llévate el cheatsheet de Python (gratis)

PDF de 6 páginas con lo esencial: tipos, condicionales, bucles, estructuras de datos, funciones y los errores que más vas a cometer. Para tener al lado mientras programas.

Sin spam. Te apuntas a la lista, descargas el cheatsheet y recibes contenido de Python cada semana.

Solución

Respuesta correcta: B) 5

split(',') genera ['a', '', 'b', '', 'c'] = 5 elementos. Los separadores consecutivos crean strings vacíos.

Sabías que…

Si usas split() sin argumentos, Python trata cualquier cantidad de espacios en blanco consecutivos como un único separador, y además ignora espacios al inicio y al final. Esto es distinto al comportamiento con un separador explícito:

# Con separador explícito: genera cadenas vacías
'a,,b'.split(',')   # ['a', '', 'b'] — 3 elementos

# Sin argumentos: ignora múltiples espacios
'a  b   c'.split()  # ['a', 'b', 'c'] — 3 elementos, sin cadenas vacías

# Para filtrar vacíos con separador explícito:
texto = 'a,,b,,c'
[x for x in texto.split(',') if x]  # ['a', 'b', 'c']

Prueba tú mismo

¿Cuántos elementos devuelve '::hola::mundo::'.split(':') ? Piensa en los separadores al inicio y al final también.


Más PyQuizzes en elpythonista.com/pyquizzes

Tutorial relacionado: Cadenas de caracteres en Python

¿Quieres aprender Python en orden, no a saltos?

Esto que has leído es solo una pieza. En El Pythonista lo verás todo encadenado: 11 módulos, 37+ horas de vídeo, 734 actividades y un proyecto real (MovieTracker) que crece contigo desde la primera variable hasta el deploy a producción.

Ver el curso completo →

37+ horas · 734 actividades · Proyecto real · Acceso de por vida · 14 días de garantía

Compartir