Cómo repetir caracteres individuales en cadenas en Python

Yo sé eso

"123abc" * 2 

evalúa como "123abc123abc" , pero ¿hay una manera fácil de repetir las letras individuales N veces, por ejemplo, convertir "123abc" a "112233aabbcc" o "111222333aaabbbccc" ?

Related of "Cómo repetir caracteres individuales en cadenas en Python"

Qué pasa:

 >>> s = '123abc' >>> n = 3 >>> ''.join([char*n for char in s]) '111222333aaabbbccc' >>> 

(cambiado a una lista de comstackción desde una expresión generadora, ya que usar una lista comp dentro de join es más rápido )

Una itertools alternativa de itertools -problem-overcomplicating-style 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, “Sé las expresiones regulares y lo usaré para todo”, opción de estilo:

 >>> 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 use estas soluciones en la práctica.

Otra forma de hacerlo sería usando el map :

 "".join(map(lambda x: x*7, "map")) 

Y como uso numpy para todo, aquí vamos:

 import numpy as np n = 4 ''.join(np.array(list(st*n)).reshape(n, -1).T.ravel()) 

Si desea repetir letras individuales , simplemente puede reemplazar la letra con n letras, por ejemplo

 >>> s = 'abcde' >>> s.replace('b', 'b'*5, 1) 'abbbbbcde' 

La respuesta de @Bromrom es probablemente más clara que la mía, pero solo para decir que hay muchas soluciones para este problema:

 >>> s = '123abc' >>> n = 3 >>> reduce(lambda s0, c: s0 + c*n, s, "") '111222333aaabbbccc' 

Tenga en cuenta que reduce no está integrado en Python 3, y tiene que usar functools.reduce en functools.reduce lugar.

O usando expresiones regulares:

 >>> import re >>> s = '123abc' >>> n = 3 >>> re.sub('(.)', r'\1' * n, s) '111222333aaabbbccc' 

De otra manera:

 def letter_repeater(n, string): word = '' for char in list(string): word += char * n print word letter_repeater(4, 'monkeys') mmmmoooonnnnkkkkeeeeyyyyssss