Ho bisogno di generare una stringa con n caratteri in Python. C'è una risposta su una riga per raggiungere questo obiettivo con la libreria Python esistente? Ad esempio, ho bisogno di una stringa di 10 lettere:
string_val = 'abcdefghij'
Ho bisogno di generare una stringa con n caratteri in Python. C'è una risposta su una riga per raggiungere questo obiettivo con la libreria Python esistente? Ad esempio, ho bisogno di una stringa di 10 lettere:
string_val = 'abcdefghij'
Risposte:
Per ripetere semplicemente la stessa lettera 10 volte:
string_val = "x" * 10 # gives you "xxxxxxxxxx"
E se vuoi qualcosa di più complesso, come n
lettere minuscole casuali, è ancora solo una riga di codice (senza contare le istruzioni di importazione e la definizione n
):
from random import choice
from string import ascii_lowercase
n = 10
string_val = "".join(choice(ascii_lowercase) for i in range(n))
Le prime dieci lettere minuscole sono string.lowercase[:10]
(se hai importato il modulo di libreria standard in string
precedenza, ovviamente ;-).
Altri modi per "creare una stringa di 10 caratteri": 'x'*10
(tutti e dieci i caratteri saranno lettere minuscole x
;-), ''.join(chr(ord('a')+i) for i in xrange(10))
(di nuovo le prime dieci lettere minuscole), ecc., Ecc ;-).
.lowercase
( ascii_lowercase
è negli ultimi Python 2 e in Python 3).
Perché "una riga"? Puoi adattare qualsiasi cosa su una riga.
Supponendo che tu voglia che inizino con 'a', e aumentino di un carattere ogni volta (con wrapping> 26), ecco una riga:
>>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x))))
>>> mkstring(10)
'abcdefghij'
>>> mkstring(30)
'abcdefghijklmnopqrstuvwxyzabcd'
Questo potrebbe essere un po 'fuori questione, ma per coloro che sono interessati alla casualità della stringa generata, la mia risposta sarebbe:
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))
Vedi queste risposte e random.py
la fonte per ulteriori approfondimenti.
Se puoi usare lettere ripetute, puoi usare l' *
operatore:
>>> 'a'*5
'aaaaa'