Este código ha sido creado por Manuel Cerón y Óscar López. El archivo del código se puede llamar generar-nombres.py y se ejecuta de la siquiente manera:

$ python generar-nombres.py

   1 # -*- coding: utf-8 -*-
   2 
   3 import csv
   4 
   5 sustituciones = {
   6    'á': 'a',
   7    'é': 'e',
   8    'í': 'i',
   9    'ó': 'o',
  10    'ú': 'u',
  11    'ñ': 'n'
  12 }
  13 
  14 estrategias = (
  15    lambda n,a: n + a[0],
  16    lambda n,a: n + a[:2],
  17    lambda n,a: n[0] + a,
  18    lambda n,a: n[:2] + a,
  19    lambda n,a: n + '.' + a,
  20    lambda n,a: n.capitalize() + a.capitalize()
  21 )
  22 
  23 def limpiar(cadena):
  24    limpia = cadena.split()[0].lower()
  25    return ''.join([sustituciones[c] if c in sustituciones else c for c in limpia])
  26 
  27 def generar(nombre, apellido, usuarios):
  28    nom = limpiar(nombre)
  29    ape = limpiar(apellido)
  30    for estrategia in estrategias:
  31        usuario = estrategia(nom, ape)
  32        if usuario not in usuarios:
  33            usuarios.add(usuario)
  34            return
  35    print 'no se encontró un buen nombre de usuario para', nombre, apellido
  36 
  37 def procesar(lista):
  38    usuarios = set()
  39    for nombre, apellido in lista:
  40        generar(nombre, apellido, usuarios)
  41    return usuarios
  42 
  43 def leer(nombreArchivo):
  44        archivo = open(nombreArchivo, 'rb')
  45        reader = csv.reader(archivo, delimiter=',', quoting=csv.QUOTE_NONE)
  46        for nombre, apellido in reader:
  47                yield (nombre, apellido)
  48 
  49 print procesar(leer('usuarios.csv'))

Para poder ver la implementación, el archivo usuarios.csv de ejemplo puedes descargar y guardar en el mismo sitio del archivo código.

Python/Code/GeneracionDeCorreosConNombres (last edited 2010-09-20 20:39:36 by Kmilo)