173 votes

En Python, comment créer une chaîne de n caractères dans une ligne de code?

J'ai besoin de générer une chaîne avec n caractères en Python. Existe-t-il une réponse à 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'
 

351voto

Eli Courtwright Points 53071

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 n lettres minuscules aléatoires, il ne reste qu'une ligne de code (sans compter les instructions d'importation et en définissant n ):

 from random import choice
from string import lowercase
n = 10

string_val = "".join(choice(lowercase) for i in range(n))
 

10voto

Alex Martelli Points 330805

Les dix premières lettres minuscules sont string.lowercase[:10] (si vous avez précédemment importé le module de bibliothèque standard string , bien sûr ;-).

Autres façons de "créer une chaîne de 10 caractères": 'x'*10 (tous les dix caractères seront en minuscule x s ;-), ''.join(chr(ord('a')+i) for i in xrange(10)) (les dix premiers lettres minuscules encore), etc, etc ;-).

4voto

John Millikin Points 86775

Pourquoi "une ligne"? Vous pouvez adapter n'importe quoi sur une seule ligne.

En supposant que vous vouliez qu'ils commencent par 'a' et que vous incrémentiez d'un caractère à chaque fois (avec un wrapping> 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'
 

4voto

foudil Points 27

C'est peut-être un peu en dehors de la question, mais pour ceux intéressés par le 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 la source de random.py pour plus d'informations.

3voto

Fragsworth Points 5854

Si vous pouvez utiliser des lettres répétées, vous pouvez utiliser l'opérateur * :

 >>> 'a'*5

'aaaaa'
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X