separar - reemplazar caracteres en python
Generando cadenas de texto aleatorias de un patrĂ³n dado (4)
Vea un ejemplo - Receta 59873: Generación de contraseña aleatoria .
Sobre la base de la receta, aquí hay una solución a su pregunta:
from random import choice
import string
def GenPasswd2(length=8, chars=string.letters + string.digits):
return ''''.join([choice(chars) for i in range(length)])
>>> GenPasswd2(8,string.digits) + GenPasswd2(15,string.ascii_letters)
''28605495YHlCJfMKpRPGyAw''
>>>
Necesito generar cadenas de texto aleatorias de un formato particular. Me gustaría algunas ideas para poder codificarlo en Python. El formato es <número de 8 dígitos> <cadena de 15 caracteres>.
#!/usr/bin/python
import random
import string
digits = "".join( [random.choice(string.digits) for i in xrange(8)] )
chars = "".join( [random.choice(string.letters) for i in xrange(15)] )
print digits + chars
EDIT: me gustó la idea de usar random.choice mejor que randint (), así que actualicé el código para reflejar eso.
Nota: esto supone que se desean caracteres en minúsculas y mayúsculas. Si es minúscula, solo cambie la segunda lista de comprensión para leer:
chars = "".join( [random.choice(string.letters[:26]) for i in xrange(15)] )
Obviamente para mayúsculas solo puedes darle la vuelta para que el corte sea [26:] en lugar de al revés.
random.sample
es una elección alternativa. La diferencia, como se puede encontrar en la documentación de python.org , es que random.sample
muestras de random.sample
no se reemplazan. Por lo tanto, random.sample(string.letters, 53)
daría como resultado un ValueError
. Entonces, si quisieras generar tu cadena aleatoria de ocho dígitos y quince caracteres, escribirías
import random, string
digits = ''''.join(random.sample(string.digits, 8))
chars = ''''.join(random.sample(string.letters, 15))
Aquí hay una versión más simple:
import random
import string
digits = "".join( [random.choice(string.digits+string.letters) for i in xrange(10)] )
print digits