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.
