Ich muss eine Zeichenfolge mit n Zeichen in Python generieren. Gibt es eine einzeilige Antwort, um dies mit der vorhandenen Python-Bibliothek zu erreichen? Zum Beispiel brauche ich eine Zeichenfolge aus 10 Buchstaben:
string_val = 'abcdefghij'
Ich muss eine Zeichenfolge mit n Zeichen in Python generieren. Gibt es eine einzeilige Antwort, um dies mit der vorhandenen Python-Bibliothek zu erreichen? Zum Beispiel brauche ich eine Zeichenfolge aus 10 Buchstaben:
string_val = 'abcdefghij'
Antworten:
So wiederholen Sie denselben Buchstaben einfach zehnmal:
string_val = "x" * 10 # gives you "xxxxxxxxxx"
Und wenn Sie etwas Komplexeres wie n
zufällige Kleinbuchstaben wünschen , ist es immer noch nur eine Codezeile (ohne die Importanweisungen und die Definition n
):
from random import choice
from string import ascii_lowercase
n = 10
string_val = "".join(choice(ascii_lowercase) for i in range(n))
Die ersten zehn Kleinbuchstaben sind string.lowercase[:10]
(wenn Sie das Standardbibliotheksmodul string
zuvor importiert haben , natürlich ;-).
Andere Möglichkeiten, "eine Zeichenfolge mit 10 Zeichen zu 'x'*10
erstellen ": (Alle zehn Zeichen sind Kleinbuchstaben x
;-), ''.join(chr(ord('a')+i) for i in xrange(10))
(wieder die ersten zehn Kleinbuchstaben) usw. usw. ;-).
.lowercase
( ascii_lowercase
ist in den letzten Python 2 sowie in Python 3 enthalten).
Warum "eine Zeile"? Sie können alles in eine Zeile einfügen.
Angenommen, Sie möchten, dass sie mit 'a' beginnen und jedes Mal um ein Zeichen erhöht werden (mit Umbruch> 26), dann ist hier eine Zeile:
>>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x))))
>>> mkstring(10)
'abcdefghij'
>>> mkstring(30)
'abcdefghijklmnopqrstuvwxyzabcd'
Dies mag ein wenig von der Frage abweichen, aber für diejenigen, die an der Zufälligkeit der generierten Zeichenfolge interessiert sind, wäre meine Antwort:
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))
Weitere Informationen finden Sie in diesen Antworten und in random.py
der Quelle.
Wenn Sie wiederholte Buchstaben verwenden können, können Sie den *
Operator verwenden:
>>> 'a'*5
'aaaaa'