Sofía, miembro de este gran staff, nos hizo el favor de redactar este artículo porque domina muy bien el tema.
Solución:
Qué pasa:
>>> s = '123abc'
>>> n = 3
>>> ''.join([char*n for char in s])
'111222333aaabbbccc'
>>>
(cambiado a una compilación de lista de una expresión de generador ya que usar una compilación de lista dentro de la combinación es más rápido)
Una alternativa itertools
-opción de estilo de complicación excesiva del problema con repeat()
, izip()
y chain()
:
>>> from itertools import repeat, izip, chain
>>> "".join(chain(*izip(*repeat(s, 2))))
'112233aabbcc'
>>> "".join(chain(*izip(*repeat(s, 3))))
'111222333aaabbbccc'
O bien, la opción de estilo “Sé expresiones regulares y las usaré para todo”:
>>> import re
>>> n = 2
>>> re.sub(".", lambda x: x.group() * n, s) # or re.sub('(.)', r'1' * n, s) - thanks Eduardo
'112233aabbcc'
Por supuesto, no utilice estas soluciones en la práctica.
Si quieres repetir individual letras, simplemente puede reemplazar la letra con n letras, por ejemplo
>>> s = 'abcde'
>>> s.replace('b', 'b'*5, 1)
'abbbbbcde'
valoraciones y comentarios
Si eres capaz, eres capaz de dejar un ensayo acerca de qué te ha parecido este post.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)