En Python, ¿cómo creo una cadena de n caracteres en una línea de código?

Necesito generar una cadena con n caracteres en Python. ¿Hay una respuesta de una línea para lograr esto con la biblioteca de Python existente? Por ejemplo, necesito una cadena de 10 letras:

string_val = 'abcdefghij' 

Para repetir simplemente la misma letra 10 veces:

 string_val = "x" * 10 # gives you "xxxxxxxxxx" 

Y si desea algo más complejo, como n letras minúsculas aleatorias, es solo una línea de código (sin contar las declaraciones de importación y la definición de n ):

 from random import choice from string import ascii_lowercase n = 10 string_val = "".join(choice(ascii_lowercase) for i in range(n)) 

Las primeras diez letras minúsculas son string.lowercase[:10] (si ha importado la string módulo de biblioteca estándar anteriormente, por supuesto ;-).

Otras formas de “hacer una cadena de 10 caracteres”: 'x'*10 (los diez caracteres serán minúsculas x s ;-), ''.join(chr(ord('a')+i) for i in xrange(10)) (las diez primeras letras minúsculas otra vez), etc, etc ;-).

si solo quieres cartas

  'a'*10 # gives 'aaaaaaaaaa' 

Si quieres letras consecutivas (hasta 26):

  ''.join(['%c' % x for x in range(97, 97+10)]) # gives 'abcdefghij' 

¿Por qué “una línea”? Puede caber cualquier cosa en una línea.

Asumiendo que desea que empiecen con ‘a’, e incremente en un carácter cada vez (con ajuste> 26), aquí hay una línea:

 >>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x)))) >>> mkstring(10) 'abcdefghij' >>> mkstring(30) 'abcdefghijklmnopqrstuvwxyzabcd' 

Si puede usar letras repetidas, puede usar el operador * :

 >>> 'a'*5 'aaaaa' 

Esto podría ser un poco fuera de la cuestión, pero para aquellos interesados ​​en la aleatoriedad de la cadena generada, mi respuesta sería:

 import os import string def _pwd_gen(size=16): chars = string.letters chars_len = len(chars) return str().join(chars[int(ord(c) / 256. * chars_len)] for c in os.urandom(size)) 

Vea estas respuestas y la fuente de random.py para más información.