J'ai besoin de générer une chaîne avec n caractères en Python. Existe-t-il une réponse en une ligne pour y parvenir avec la bibliothèque Python existante? Par exemple, j'ai besoin d'une chaîne de 10 lettres:
string_val = 'abcdefghij'
J'ai besoin de générer une chaîne avec n caractères en Python. Existe-t-il une réponse en une ligne pour y parvenir avec la bibliothèque Python existante? Par exemple, j'ai besoin d'une chaîne de 10 lettres:
string_val = 'abcdefghij'
Réponses:
Pour répéter simplement la même lettre 10 fois:
string_val = "x" * 10 # gives you "xxxxxxxxxx"
Et si vous voulez quelque chose de plus complexe, comme ndes lettres minuscules aléatoires, ce n'est toujours qu'une seule ligne de code (sans compter les instructions d'importation et sans définir n):
from random import choice
from string import ascii_lowercase
n = 10
string_val = "".join(choice(ascii_lowercase) for i in range(n))
Les dix premières lettres minuscules sont string.lowercase[:10](si vous avez stringprécédemment importé le module de bibliothèque standard , bien sûr ;-).
Autres façons de "créer une chaîne de 10 caractères": 'x'*10(tous les dix caractères seront des xs minuscules ;-), ''.join(chr(ord('a')+i) for i in xrange(10))(les dix premières lettres minuscules à nouveau), etc, etc ;-).
.lowercase( ascii_lowercaseest dans Python 2 récent ainsi que dans Python 3).
Pourquoi "une ligne"? Vous pouvez insérer n'importe quoi sur une seule ligne.
En supposant que vous vouliez qu'ils commencent par `` a '' et incrémentent d'un caractère à chaque fois (avec retour à la ligne> 26), voici une ligne:
>>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x))))
>>> mkstring(10)
'abcdefghij'
>>> mkstring(30)
'abcdefghijklmnopqrstuvwxyzabcd'
Cela peut être un peu hors de la question, mais pour ceux qui s'intéressent au caractère aléatoire de la chaîne générée, ma réponse serait:
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))
Voir ces réponses et random.pyla source pour plus d'informations.
Si vous pouvez utiliser des lettres répétées, vous pouvez utiliser l' *opérateur:
>>> 'a'*5
'aaaaa'