22 abril, 2021

GENERAR CADENAS DE CARACTERES ALFANUMÉRICOS ALEATORIOS CON PYTHON

Hola a todos!:

Hoy de nuevo vamos a trabajar con python!. En concreto nuestra tarea será la de generar cadenas de caracteres alfanuméricos aleatorios. Como ya sabéis en esta web hay varios post en distintos lenguajes sobre este tema:

Y ahora toca hacerlo con python : ) Para ello vamos a tener en cuenta el siguiente supuesto: tenemos que generar n cantidad de cadenas de longitudes determinadas en un rango (mínimo y máximo). Se tendrán en cuenta, números, letras y determinados caracteres especiales. Obviamente tendremos que exportar la información a Excel.

Os propongo para hacerlo el siguiente código:

import random
import string
import xlsxwriter  
#Ruta donde guadaremos la información
workbook = xlsxwriter.Workbook(r'C:\Users\USUARIO\OneDrive\Documents-Segu\ALFANUMERICOS ALEATORIOS\ALFANUMERICOS_ALEATORIOS.xlsx')
worksheet = workbook.add_worksheet("Hoja1")
#numero de líneas o cadenas
nCadenas=100
#numero maximo de filas por columna
lColumn=25
#inicializador filas
row =0
#inicializador columnas
column=0
#loop para generar las cadenas
for i in range(1, nCadenas+1):
    def generaCadena():
        #Cadena completa de los caracteres a elegir aleatoriamente
        MiCadena = string.ascii_letters + string.digits + str('*/|+$%')     
        #eleccion aleatoria y rango de longitud
        return "".join(random.choice(MiCadena)  for j in range(random.randint(10,50))) 
    print(generaCadena())  
    #guardamos datos
    worksheet.write(row, column, generaCadena())
    row += 1
    if row == lColumn:
                    column=column + 1
                    row=-1
                    row += 1
workbook.close()

En este ejemplo vamos a generar 100 cadenas con un tope de 25 filas por columnas (es decir, 4 columnas) y con un largo de rango mínimo 10 de caracteres y máximo de 50 caracteres.

Creo que ha comentado con detenimiento cada línea de código y no me voy a extender a comentarlo, excepto en:

string.ascii_letters + string.digits + str('*/|+$%')

Para este ejemplo he querido tener en cuenta solo unos caracteres especiales, si quiera todos utilizaría: string.punctuation que contiene todos estos: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~. Aquí tenéis documentación.

Y para el resto sería igual, si deseo un determinado grupo de números o letras, solo hay para pasarlos como una string.

Este es el código en Visual Studio Code con Jupyter:

Como podéis observar, en la pantalla del output se muestran las cadenas ya generadas. Y si queremos verlo en Excel, este es el resultado:

Y esto es todo, espero que sea de utilidad e interés.

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies