una separar reemplazar por eliminar contar comparar caracteres caracter cadenas cadena python string random

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