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>.Generación de cadenas de texto aleatorias de un patrón determinado
Respuesta
#!/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: le gusta la idea de usar random.choice mejor que randint() por lo que he actualizado el código para reflejar eso.
Nota: esto supone que se desean caracteres en minúscula y mayúscula. Si minúsculas sólo entonces cambiar la segunda lista por comprensión para leer:
chars = "".join([random.choice(string.letters[:26]) for i in xrange(15)])
Obviamente para mayúsculas solamente Sólo puede voltear que todo lo que el corte es [26:] en lugar de al revés.
Ver un ejemplo - Recipe 59873: Random Password Generation.
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'
>>>
random.sample
es una opción alternativa. La diferencia, como se puede encontrar en python.org documentation, es que random.sample
muestras sin reemplazo. Por lo tanto, random.sample(string.letters, 53)
daría como resultado un ValueError
. A continuación, si desea generar su cadena aleatoria de ocho dígitos y quince caracteres, podría escribir
import random, string
digits = ''.join(random.sample(string.digits, 8))
chars = ''.join(random.sample(string.letters, 15))
Aquí es 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
- 1. Generación de frases aleatorias en JavaScript
- 2. generación de contraseñas aleatorias con condiciones
- 3. ¿Cómo insertar 1000 fechas aleatorias entre un rango determinado?
- 4. Generación de identificación único para un equipo determinado
- 5. Cadenas aleatorias en Python 2.6 (¿Está bien?)
- 6. Buscar nombres de atributos que comiencen con un determinado patrón
- 7. ¿Cómo comparar cadenas encriptadas con semillas aleatorias?
- 8. Tabla de actualización, elegir entre 3 cadenas aleatorias, ¿cómo?
- 9. Plantillas de texto para la generación de cadenas en tiempo de ejecución (como Razor o T4)
- 10. generación de etiquetas de un contenido de texto
- 11. Generación de código de patrón de generador en IntelliJ
- 12. Generando oraciones aleatorias de texto personalizado en Python's NLTK?
- 13. Consulta de XPath para nombres de nodo que coinciden con un determinado patrón
- 14. Generación de todas las fechas dentro de un rango determinado en Python
- 15. Generación de un producto clave
- 16. ¿Cómo obtener cadenas aleatorias con espacios y mayúsculas y minúsculas?
- 17. ¿Cómo deshabilitar los bloques div que tienen un determinado patrón de identificación?
- 18. ¿Cómo busco un patrón dentro de un archivo de texto usando Python combinando operaciones de expresiones regulares y cadenas/archivos y almacenando instancias del patrón?
- 19. Generación de un patrón de parpadeo entretenido para un 1D disposición
- 20. ¿Es este un patrón de diseño común? "Patrón de descriptor"?
- 21. Elecciones aleatorias de dos valores
- 22. formas curvas "aleatorias" de lienzo
- 23. Cadenas de bits que coinciden con el patrón de Erlang
- 24. Cómo realizo lecturas aleatorias de un archivo UTF8
- 25. jQuery (anti-) patrón: creación de selectores con manipulación de cadenas
- 26. bash: obtener la lista de variables cuyo nombre coincide con un patrón determinado
- 27. Buscar la última confirmación en el repositorio Git que contiene un determinado patrón de cadena
- 28. ¿Cómo puedo decirle a Symfony2 que siempre use _format = json para un determinado patrón de URL?
- 29. Procesar eventos del Registro de eventos y reaccionar en un determinado patrón (Rx?)
- 30. Cuadro de texto numérico con patrón MVVM
Niza respuesta! (Nunca antes había visto random.choice.) –
Guarde las recetas como marcador - http://code.activestate.com/recipes/ – gimel
Probablemente más legible para usar string.lowercase y string.uppercase que cortar la lista. Además, la solución solo se cumple si el OP está satisfecho con solo caracteres ASCII, si quiere generar cadenas a partir de todo el conjunto de caracteres Unicode, el problema se vuelve mucho más difícil. –